断言 UITest 中的按钮上存在图像

2023-12-14

我在 ZStack 中有一个带有前景图像的按钮:

Button(action: {
    self.highlighted = !self.highlighted
}) {
    ZStack {
        Text("Text")
        if self.highlighted {
            Image("highlighted").resizable()
        }
    }
}

仅当变量为 true 时,前景图像(“突出显示”)才可见。单击按钮可翻转突出显示的变量。因此,如果单击该按钮,它将突出显示,如果再次单击该按钮,它将不再突出显示。我现在想要一个 UiTest,其中单击按钮并测试检查“突出显示”的图像是否存在。这就是我作为 UiTest 所拥有的,但它在最后一个断言中失败了:

func test_highlight() {
    let app = XCUIApplication()
    let button = app.buttons["my_button"]
    XCTAssertTrue(button.exists)
    button.tap()
    XCTAssertTrue(button.images["highlighted"].exists) // <-- Fails here
}

这在 UiTests 中可能吗?如果是,怎么办?如果不是,还有什么替代方案?


好的,可行。但说实话,我真的不喜欢在项目文件中编写代码只是为了让测试工作。这很遗憾,如果这是测试它的唯一方法

我同意,并且我不会使用该标识符。然而,公平地说,你所要求的并不是我认为你通常在 UI 测试级别测试的东西 ???? ?

也许通过单元测试资源和业务逻辑(在你的书中),并通过快照测试来测试 UI(看起来不错)?

就我个人而言,我会在这里通过用户集成流程中元素的可访问性/值/标签等来验证 UI。

Example

如果将按钮配置为可正确访问,则可以验证按钮的“选定”状态。

let localisedstring = “localised-text”

Button(action: {
    self.highlighted = !self.highlighted
}) {
    ZStack {
        Text(localisedstring)
        if self.highlighted {
            Image("highlighted").resizable()
        }
    }
}
.accessibilityTraits(isHighlighted ? [.button, .selected] : [.button])
.accessibilityLabel(localisedString)

然后在测试中你可以这样做:

// Given base button 
let button = app.buttons[“button-id”]
XCTAssertFalse(button.isSelected) 

// When user taps 
button.tap()

// Then button should be selected
XCTAssertTrue(button.isSelected) 

// And whatever-else that button should do 

与使用标识符类似,您已使其可测试,并且更好地支持辅助功能用户,例如语音!

编辑:写在我的iPad上,所以请视为伪????‍♂️

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

断言 UITest 中的按钮上存在图像 的相关文章

  • 如何为PDFView设置PDFPageOverlayViewProvider?

    更新 我正在尝试设置pageOverlayViewProvider for a PDFView并且它没有按预期工作 PDFPageOverlayViewProvider方法没有被调用 PDFViewDelegate方法运行良好 struct
  • Xcode 4:删除构建设置中的项目

    在 XCode 4 0 中 有一个新设计的 构建设置 页面 我的问题是 一旦指定设置 我就看不到如何删除它 示例 我已将目标级别的 版本控制系统 更改为 Apple Generic 后来我意识到我应该在项目级别设置它 所以我想删除目标级别设
  • SwiftUI - 如何调整 PickerView 的大小?

    如何在 SwiftUI 中调整选择器视图的大小 我需要更改它占用的宽度 我下面的代码只是一个简单的视图 里面有一个选择器 更改宽度参数不会更改选取器视图的宽度 struct CalibrationBar View State var ton
  • XCode 4 中硬编码的本地化文件路径 - 当项目移动到新文件夹时消失

    我们最近使用 Xcode 将一个项目本地化为 15 种语言 但我注意到当我将该项目带回家时 一些本地化文件的路径都被硬编码到我工作 Mac 的完整路径 我们只本地化了两个文件 InfoPlist strings Localizable st
  • 来自 IOS Xcode 的 Azure 推送通知错误

    我觉得我是世界上第一个尝试让 iOS 快速与 Azure 配合使用的人 但没有太多帮助 我跟着这个创建 iOS 应用程序 https azure microsoft com en us documentation articles app
  • 为什么我不能将新的视图控制器推送到当前视图上?

    我正在使用以下代码并收到以下错误 编辑 参见this https i stack imgur com k713X png如果您看不懂上图 ChangePasscode 当前被声明为一个类 并且是一个具有 h 和 m 文件以及 nib 文件的
  • 在 Interface Builder 中添加背景图像

    我正在尝试使用 Xcode 4 2 添加自定义图像作为我的应用程序的背景 但我不太确定该怎么做 我可以在 Interface Builder 中添加纯色作为背景 但我没有看到添加自定义图像的选项 我在谷歌上搜索了这个问题并研究了几个小时 但
  • 如何更改 FileMerge 的字体/设置/首选项?

    一段时间以来 我无法更改 FileMerge 的字体 然后它突然开始对它无法识别的文件 如打字稿源文件 使用类似 Helvetica 的字体 无衬线 可变宽度 通过将字体更改为 Helvetica 可以暂时更改为 monaco 是的 这很奇
  • 提交的代码签名应用程序无效

    我尝试向应用程序商店提交应用程序 但收到以下错误 我见过类似的问题 并提出了 2 个不同的解决方案 但都没有解决问题 无效的代码签名权利 您的应用程序包的签名包含不受支持的权利值 具体来说 不支持密钥 com apple developer
  • 收到断言失败错误

    加载其中包含 UITableView 的视图之一时 出现以下错误 有谁知道如何修理它 我已经尝试过删除 void tableView UITableView tableView commitEditingStyle UITableViewC
  • 已删除的测试仍保留在 Xcode 测试导航器中

    我最近从我的项目中删除了一些旧的测试类并删除了这些文件 正如预期的那样 文件被移至垃圾箱并在 git 中显示为已删除 不幸的是 它们定义的测试类和测试用例继续出现在测试导航器中 我尝试过常见的方法 例如清理和重建 以及退出并重新打开 Xco
  • Xamarin.iOS 目标 iOS 6 SDK

    我们已升级到 XCode 5 和 Xamarin iOS 7 x 但有一个应用程序尚未准备好支持 iOS 7 有没有办法以 iOS 6 0 SDK 为目标 并编译应用程序 使其具有旧的 iOS 6 键盘等 我们尝试更改 iOS Build
  • 部署目标是什么意思?

    这是我假设的一个非常简单的问题 有人可以告诉我部署目标是什么意思吗 如果我选择 iOS 10 是否意味着只有 iOS 10 的用户才能下载该应用程序 选择较低的部署目标是否不好 另外 继续部署目标 是否不建议在较低的部署目标上运行 假设您已
  • 如何在 SwiftUI 中将阴影应用于内部视图?

    我在周围添加了阴影VStack其中包含我的两个文本字段和一个提交按钮 然而 阴影也被应用到了文本框内的两个文本字段 VStack 我在这里缺少什么导致这种情况发生吗 我尝试添加shadow radius 0 在文本字段上 但它不会改变任何内
  • 在 OS X 上创建和使用静态库

    好的 我正在尝试创建一个 Cocoa 库 静态 并使用 但我不断收到错误 我创建了一个超基本的静态库 TSXLib 其中仅包含一个额外的类 import
  • 在 iOS 上将 NSString 转换为 NSDate 的正确方法?

    我一直在使用此方法将常规 NSString 对象转换为 NSDate 但尝试向 Apple 提交更新 但遭到拒绝 在 iOS 中还有什么其他方法可以做到这一点 NSString date str 2011 08 12T12 20 00Z N
  • ios水平居中约束问题?

    I am having hard time in learning constraints auto layout in iOS I have used any width any height I have a storyboard sc
  • 什么是 WKWebView 中的 WKErrorDomain 错误 4

    fatal error LPWebView encounters an error Error Domain WKErrorDomain Code 4 A JavaScript exception occurred UserInfo 0x7
  • SwiftUI:发送电子邮件

    在正常情况下UIViewController在 Swift 中 我使用此代码发送邮件 let mailComposeViewController configuredMailComposeViewController mailCompose
  • iOS - UITableViewCell 使文本加粗

    我有一个字符串 NSString userInfo James Johnson james 我想做的就是大胆James Johnson并保留 james正常字体 所以我尝试过的是使用NSAttributedString但为了完成这个过程 我

随机推荐

  • Sqlite 不返回此类表,但在 OnePlusTwo 设备上获取时存在该表

    我已将数据库文件从资产复制到应用程序数据库 并且已成功复制 当我查询任何表时 它不会返回此类表异常 我从该手机中获取了数据库文件 它包含所需的所有表格 我知道这有点奇怪 但此错误仅出现在 OnePlusTwo 设备上 所以我的问题是这是一个
  • 原生 javascript 中的 jQuery index()

    根据 jQuery api get 的补充操作 它接受索引并返回 DOM 节点 index 可以获取 DOM 节点并返回索引 假设我们页面上有一个简单的无序列表 ul li foo li li bar li li baz li ul ind
  • 如何用假测试模块替换 Guice 模块进行单元测试?

    这是我们的使用方式Guice在新的应用程序中 public class ObjectFactory private static final ObjectFactory instance new ObjectFactory private
  • 在 Qt 中创建旋转进度条

    Create Spin Progress bar in Qt I want to show progress bar like the one which appears while loading Please Find Image 我的
  • DNS 消息是否将名称填充为偶数字节?

    初步说明 是的 我知道 DNS 库和易于使用的 DNS 服务器的存在 我这样做纯粹是为了学术目的 并了解 DNS 查询的工作原理 问题 我在看RFC 1035了解 DNS 消息的工作原理 我想我或多或少理解了该备忘录中的所有内容 然而 有一
  • pygame 与海龟崩溃

    我收到此错误代码 2017 04 13 03 04 14 958 Python 606 839244 SDLApplication setup unrecognized selector sent to instance 0x1007a0d
  • SQL Server 2005 中的临时表不会自动删除

    我正在对一个令人讨厌的存储过程进行故障排除 并注意到在运行它之后 并且我已经关闭了会话 许多临时表仍然留在 tempdb 中 他们的名字如下 000E262B 002334C4 004E1D4D 00583EEE 00783A7F 0083
  • 使用 MTKTextureLoader 加载远程图像

    我正在尝试将远程图像加载到MTLTexture用这个代码 let textureLoader MTKTextureLoader device device textureLoader newTexture withContentsOf ur
  • 从Github API获取特定的README.md数据

    最近 我开始尝试使用 GitHub API 从公共存储库获取特定数据 长话短说 我想从存储库中获取 README md 文件的特定部分 例如 来自 Facebook 的 React 存储库的 master 分支 我想抓取下面的文本文档Git
  • 最小列总和差是多少? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 想象一下 给定一个正整数矩阵 最大 25 15 数字值不超过 3000000 当您进行列求和并选择最小和最大的一项时 它们之间的差异必须尽可能小 您可以根据需要交换每行中的数字
  • 以 HTML 形式显示的 LaTeX 表格

    我有以下 LateX 表 在以下情况下按预期呈现format pdf title Test Table format pdf begin center begin tabular l l l hline Var Class Descript
  • 用户名网址,例如 twitter 和 facebook

    twitter 和 facebook 等如何制作唯一的 url 例如 twitter com billgates 如果我想做同样的事情 为我的用户提供带有用户名的唯一网址 它是一个应用程序还是您为每个用户创建一个带有索引页面的目录 顺便说一
  • InvalidParameterValueException:无法访问流

    我正在尝试使用 Terraform 创建 dynamodb 表和 lambda 触发器 这就是我定义表 角色策略和 lambda 触发器的方式 resource aws dynamodb table filenames name local
  • 如何更新数组中嵌套的数组中的项目

    我通过最新的 C 驱动程序 此时为 v2 7 0 使用 MongoDB 4 0 我有一份文件 其中有Options and Options have Inventory 换句话说 库存数组嵌套在选项数组中 如何了解库存水平并仅更新库存 以下
  • 如何读取和修改已绘制的 Google 图表上的轴?

    我有一个页面 上面有几个谷歌图表 主要是组合图和折线图 例如 chart new google visualization LineChart chartDiv 绘制页面后 我希望能够读取轴上的最大值 然后重新绘制图表 以便它们在轴上都具有
  • 当存在多个路由时,使用查询字符串进行路由属性路由

    我有这个 HttpGet Route Cats public IHttpActionResult GetByCatId int catId HttpGet Route Cats public IHttpActionResult GetByN
  • 在 Ant 复制任务过滤器中获取文件名

    是否可以获取 Ant 复制任务中正在复制的当前文件名 我正在尝试运行 beanshell 脚本并希望访问当前文件名
  • 错误:无法在属性初始值设定项中使用实例成员 - Swift 3

    当我编译以下代码时 出现错误 无法在属性初始值设定项中使用实例成员 AddEployeeName 属性初始值设定项在 self 可用之前运行 你能帮忙解决这个错误吗 该计划允许员工输入姓名并拍摄照片 class AddEmployeeVie
  • 具有复杂形状的 ggplot 和 grid.picture 之间的区别

    我希望获得单个字母的 x y 坐标并用 ggplot 绘制它们 我在用grImport PostScriptTrace从 Postscript 文件获取 XML 文件 从那里 我从 Picture 类的 S4 对象中提取 x y 坐标 绘制
  • 断言 UITest 中的按钮上存在图像

    我在 ZStack 中有一个带有前景图像的按钮 Button action self highlighted self highlighted ZStack Text Text if self highlighted Image highl