当我打印 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 documentationUIAccessibilityTraits 是:

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 特征,8589934592Others 特征.也许,这就是你查询 navigationBars or otherElements.

的方式