当我打印 XCUIApplication() 的属性时,特征键的值代表什么?
When I print the attributes of the XCUIApplication(), what does the value of the traits key represent?
转储 XCUIApplication() 的示例输出
Application, pid: 34372, {{0.0, 0.0}, {320.0, 568.0}}, label: 'MyApp'
Window, {{0.0, 0.0}, {320.0, 568.0}}
Other, {{0.0, 0.0}, {320.0, 568.0}}
Other, traits: 8589934592, {{0.0, 0.0}, {320.0, 568.0}}
NavigationBar, **traits: 35192962023424, {{0.0, 20.0}, {320.0, 44.0}}, identifier: 'SillyDashboardView'
在上面的输出中,traits: 8589934592
代表什么?
查看 XCUIApplication 对象无济于事,我也找不到 Apple 的任何文档。了解这些值代表什么会很有用。
根据在对象上设置的accessibilityTraits,特征编号会有所不同。有些对象具有开箱即用的可访问性特征,您可以根据需要添加或删除它们。这些特性对 XCTest 意味着不同的东西,例如.button
特征意味着当您查询按钮时该元素将显示,.selected
特征影响 XCUIElement.isSelected
...
的值
这个数字也可能受到 Apple 未与我们共享的其他属性的影响,但出于 UI 测试的目的,您应该只需要观察 accessibilityTraits 的值。
根据 official documentation,UIAccessibilityTraits 是:
A mask that contains the OR combination of the accessibility traits that best characterize an accessibility element.
实际上是什么 UIAccessibilityTraits? Just another alias for 64-bit integer value which means that there are 64 different traits a view can have each bit representing one trait. Looking at the list of all possible traits,你可以看到大约有 17 个已知的 tratis(正如 Oletha 指出的那样,Apple 可能使用了一些未知的 tratis 但它们不共享和我们一起)。
如果你打印其中一些,像这样:
print(UIAccessibilityTraitNone) //Prints 0
print(UIAccessibilityTraitButton) //Prints 1
print(UIAccessibilityTraitLink) //Prints 2
print(UIAccessibilityTraitImage) //Prints 4
//...
您可以看到每个特征都是一个 2 的某个次方的值(反过来只有一位设置)。因此,OR
-ing 每个特定特征都会为您提供打印出 XCUIApplication()
.
时看到的最终数字
因此,在您的示例中,如果您选择编号为 35192962023424
的那个,您有:
35192962023424 or in binary:
0000 0000 0000 0000 0010 0000 0000 0010 0000 0000 0000 0000 0000 0000 0000 0000
^ ^
这意味着有两个特征应用于此视图。值为 35184372088832
或二进制:
0000 0000 0000 0000 0010 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
^
和值为 8589934592
的那个,或者二进制:
0000 0000 0000 0000 0000 0000 0000 0010 0000 0000 0000 0000 0000 0000 0000 0000
^
查看这两个数字的 known 特征,您可以得出结论,这些视图没有给出已知特征。
我的猜测 查看输出是 35184372088832
特征是 NavigationBars
特征,8589934592
是 Others
特征.也许,这就是你查询 navigationBars or otherElements.
的方式
转储 XCUIApplication() 的示例输出
Application, pid: 34372, {{0.0, 0.0}, {320.0, 568.0}}, label: 'MyApp'
Window, {{0.0, 0.0}, {320.0, 568.0}}
Other, {{0.0, 0.0}, {320.0, 568.0}}
Other, traits: 8589934592, {{0.0, 0.0}, {320.0, 568.0}}
NavigationBar, **traits: 35192962023424, {{0.0, 20.0}, {320.0, 44.0}}, identifier: 'SillyDashboardView'
在上面的输出中,traits: 8589934592
代表什么?
查看 XCUIApplication 对象无济于事,我也找不到 Apple 的任何文档。了解这些值代表什么会很有用。
根据在对象上设置的accessibilityTraits,特征编号会有所不同。有些对象具有开箱即用的可访问性特征,您可以根据需要添加或删除它们。这些特性对 XCTest 意味着不同的东西,例如.button
特征意味着当您查询按钮时该元素将显示,.selected
特征影响 XCUIElement.isSelected
...
这个数字也可能受到 Apple 未与我们共享的其他属性的影响,但出于 UI 测试的目的,您应该只需要观察 accessibilityTraits 的值。
根据 official documentation,UIAccessibilityTraits 是:
A mask that contains the OR combination of the accessibility traits that best characterize an accessibility element.
实际上是什么 UIAccessibilityTraits? Just another alias for 64-bit integer value which means that there are 64 different traits a view can have each bit representing one trait. Looking at the list of all possible traits,你可以看到大约有 17 个已知的 tratis(正如 Oletha 指出的那样,Apple 可能使用了一些未知的 tratis 但它们不共享和我们一起)。
如果你打印其中一些,像这样:
print(UIAccessibilityTraitNone) //Prints 0
print(UIAccessibilityTraitButton) //Prints 1
print(UIAccessibilityTraitLink) //Prints 2
print(UIAccessibilityTraitImage) //Prints 4
//...
您可以看到每个特征都是一个 2 的某个次方的值(反过来只有一位设置)。因此,OR
-ing 每个特定特征都会为您提供打印出 XCUIApplication()
.
因此,在您的示例中,如果您选择编号为 35192962023424
的那个,您有:
35192962023424 or in binary:
0000 0000 0000 0000 0010 0000 0000 0010 0000 0000 0000 0000 0000 0000 0000 0000
^ ^
这意味着有两个特征应用于此视图。值为 35184372088832
或二进制:
0000 0000 0000 0000 0010 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
^
和值为 8589934592
的那个,或者二进制:
0000 0000 0000 0000 0000 0000 0000 0010 0000 0000 0000 0000 0000 0000 0000 0000
^
查看这两个数字的 known 特征,您可以得出结论,这些视图没有给出已知特征。
我的猜测 查看输出是 35184372088832
特征是 NavigationBars
特征,8589934592
是 Others
特征.也许,这就是你查询 navigationBars or otherElements.