使用 XCUITest 为 UI 自动化测试设置可访问性标识符
Setting accessibility identifier for UI automation testing using XCUITest
我已经开始使用 XCUITest 为 IOS 编写 UI 自动化测试。我对在编写 UI 测试时设置标识符以访问元素有点困惑。看图
我们有用户定义的运行时属性,您可以在其中定义键 "accessibilityLabel",键入字符串和值作为示例 "ButtonID"。现在,您可以使用 "ButtonID" 作为标识符来访问按钮以编写测试。
我注意到的第二件事是辅助功能部分,我们在其中有一个按名称标识符的字段,您可以在其中设置标识符并使用该标识符来访问 UI 元素。
你能确认一下两者的区别吗? UI test UI 推荐使用以上两者中的哪一个来设置标识符。
效果是一样的,当您的控件从 nib 唤醒时,您将设置好 accessibilityIdentifier
/Label
/etc
。
不确定一种方式是否"officially"优于另一种方式,但我建议至少出于以下原因使用“辅助功能”部分:
- 你是 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
¹ 同样,实施细节不可依赖。
我已经开始使用 XCUITest 为 IOS 编写 UI 自动化测试。我对在编写 UI 测试时设置标识符以访问元素有点困惑。看图
我们有用户定义的运行时属性,您可以在其中定义键 "accessibilityLabel",键入字符串和值作为示例 "ButtonID"。现在,您可以使用 "ButtonID" 作为标识符来访问按钮以编写测试。
我注意到的第二件事是辅助功能部分,我们在其中有一个按名称标识符的字段,您可以在其中设置标识符并使用该标识符来访问 UI 元素。
你能确认一下两者的区别吗? UI test UI 推荐使用以上两者中的哪一个来设置标识符。
效果是一样的,当您的控件从 nib 唤醒时,您将设置好 accessibilityIdentifier
/Label
/etc
。
不确定一种方式是否"officially"优于另一种方式,但我建议至少出于以下原因使用“辅助功能”部分:
- 你是 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
¹ 同样,实施细节不可依赖。