当我打印XCUIApplication()的属性时,traits键的值代表什么?

时间:2018-01-22 16:57:37

标签: xcode-ui-testing

转储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找到任何文档。知道这些值代表什么将是有用的。

2 个答案:

答案 0 :(得分:1)

根据对象上设置的accessibilityTraits,特征编号会有所不同。某些对象具有开箱即用的辅助功能特性,您可以根据需要添加或删除它们。这些特征对XCTest来说意味着不同的东西,例如.button特征意味着当您查询按钮时元素会显示,.selected特征会影响XCUIElement.isSelected的值......

此号码也可能受到Apple不与我们分享的其他属性的影响,但出于UI测试的目的,您只需要观察accessibilityTraits的值。 / p>

答案 1 :(得分:1)

根据official documentation UIAccessibilityTraits 是:

  

一个掩码,其中包含可以最好地表征辅助功能元素的辅助功能特征的OR组合。

实际上 UIAccessibilityTraits 是什么?只是64位整数值的另一个别名,这意味着有64个不同的特征,视图可以使每个位代表一个特征。看看list of all possible traits,你可以看到大约有17种已知的tratis(正如Oletha指出的那样,苹果可能会使用一些未知的特性,但它们不与我们分享)。

如果您打印其中一些,请执行以下操作:

import re
`PATTERN = re.compile("("+start_time+"[0-9]{0}|"+end_time+")$")` 

你可以看到每个特征都是一个2的幂(它只有一个位设置)的值。因此,print(UIAccessibilityTraitNone) //Prints 0 print(UIAccessibilityTraitButton) //Prints 1 print(UIAccessibilityTraitLink) //Prints 2 print(UIAccessibilityTraitImage) //Prints 4 //... - 每个特定特征都会为您打印出OR时看到的最终数字。

因此,在您的示例中,如果您选择号码为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

查看这两个数字的known特征,您可以得出结论,没有为这些视图提供已知的特征。

我的猜测查看输出结果是 0000 0000 0000 0000 0000 0000 0000 0010 0000 0000 0000 0000 0000 0000 0000 0000 ^ 特征是35184372088832特征,NavigationBars8589934592特征。也许,这就是您查询navigationBarsotherElements的方式。