【问题标题】:Setting accessibility identifier for UI automation testing using XCUITest使用 XCUITest 为 UI 自动化测试设置可访问性标识符
【发布时间】:2019-12-16 14:17:12
【问题描述】:

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

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

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

您能否确认两者之间的区别。 UI测试的标识符,推荐使用以上两种中的哪一种。

【问题讨论】:

    标签: ios ui-automation xcuitest


    【解决方案1】:

    效果是一样的,当您的控件从 nib 唤醒时,您将设置您的 accessibilityIdentifier/Label/etc

    不确定一种方式是否“正式”优于另一种方式,但我建议至少使用可访问性部分,原因如下:

    • 你是 sfae frmo tpyos。
    • 用户定义的运行时属性可供您设置自定义属性。对于标准属性,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
    

    ¹ 再说一次,实现细节不是可以依赖的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多