ios - 使用 XCUITest 设置 UI 自动化测试的可访问性标识符

标签 ios ui-automation xcuitest

我已经开始使用 XCUITest 为 IOS 编写 UI 自动化测试。我对在编写 UI 测试时设置访问元素的标识符感到有点困惑。看图片。

User interface in Xcode to set identifiers

我们有用户定义的运行时属性,您可以在其中定义键“accessibilityLabel”,类型为字符串,值例如“ButtonID”。现在,您可以使用“ButtonID”作为标识符来访问按钮来编写测试。

我注意到的第二件事是“辅助功能”部分,其中我们有一个按名称标识符的字段,您可以在其中设置标识符并使​​用该标识符访问 UI 元素。

您能确认一下两者之间的区别吗?推荐使用以上两者中的哪一种来设置UI测试的标识符。

最佳答案

效果是相同的,当您的控件从 Nib 唤醒时,您将设置 accessibilityIdentifier/Label/etc .

不确定一种方式是否“正式”优于另一种方式,但我建议至少使用“辅助功能”部分,原因如下:

  • 您是来自 tpyos 的 sfae。
  • 用户定义的运行时属性可供您设置自定义属性。对于标准属性,Apple 会为您提供特定的、按逻辑分组的旋钮和输入字段。
  • 如果两者都指定怎么办?您期望哪一个是最终值?
    • 答案:自定义的,但我不确定是否在任何地方都有记录,因此您不应该依赖它。即使它被记录下来,我仍然会避免这种冗余:-)
  • 自定义(用户定义)属性通过 KVC 设置,这增加了一些(可以忽略不计的)开销,而对于辅助功能部分似乎有一些快捷方式(注意缺少 setValue:forKey:):
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
  * frame #0: 0x000000010efe09fb AccessibilityProbe`-[MyButton setAccessibilityIdentifier:](self=0x00007fbb765231d0, _cmd="setAccessibilityIdentifier:", accessibilityIdentifier=@"testID") at MyButton.m:14
    frame #1: 0x0000000112e35538 UIKitCore`-[UIRuntimeAccessibilityConfiguration applyConfiguration] + 153
    frame #2: 0x0000000110825cfd CoreFoundation`-[NSArray makeObjectsPerformSelector:] + 317
    frame #3: 0x0000000112e33258 UIKitCore`-[UINib instantiateWithOwner:options:] + 1717

再次强调,实现细节并不值得依赖。

关于ios - 使用 XCUITest 设置 UI 自动化测试的可访问性标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57419887/

相关文章:

swift - 访问 XCUIElement 中的最后一个元素

xcode - 将环境变量传递给 XCUITest

ios - 以编程方式获取 Swift 中当前播放轨道的名称和艺术家

ios - 以编程方式在 iOS View 顶部添加按钮

ios - ios中通过http请求发送api键值(生产键)

silverlight - 用于 Silverlight webapp 的自动化 UI 测试工具(如 selenium webdriver)

c# - 如果未找到 UI 元素,如何使测试失败?

ios - 如何从 EarlGrey 中的文本字段捕获/提取文本值?

objective-c - Objective-C:触摸绘图不透明度

xcode - 通过 Instruments 使用 UIAutomation 操作 iphone 时,什么是 UIATargetHasGoneAWOLException。