allElementsBoundByAccessibilityElement 的含义
Meaning of allElementsBoundByAccessibilityElement
我正在学习使用 XCTest
进行 UI 测试。我无法理解 XCUIElementQuery.allElementsBoundByAccessibilityElement
:
的文档
Immediately evaluates the query and returns an array of elements bound
to the resulting accessibility elements.
"elements bound to the resulting accessibility elements"是什么意思?还有,和allElementsBoundByIndex
有什么区别?
allElementsBoundByAccessibilityElement
的文档不是很好,但我通过使用调试器四处寻找与 allElementsBoundByIndex
的区别。
调用 allElementsBoundByAccessibilityElement
或 allElementsBoundByIndex
将 return 一个包含 XCUIElement
个对象的数组。
let app = XCUIApplication();
app.launch();
let elementsByAccessibilityElement = app.images.allElementsBoundByAccessibilityElement;
let elementsByIndex = allElementsBoundByIndex;
在 returning 这个数组之后,XCUIElement
对象本身并没有真正解析,而是保留对原始查询的引用。
尽管在 XCUIElement
上尝试访问 属性 之类的 .label
...
您将看到该元素通过对可访问性层次结构进行快照来自行解析,然后重新运行 原始查询以查找该元素。您可以在调试控制台中看到这样的输出:
t = 5.76s Get all elements bound by index for: Descendants matching type Other
t = 5.84s Snapshot accessibility hierarchy for app with pid 4267
t = 10.79s Find: Descendants matching type Other
解析元素时这两种方法与 运行 原始查询的最大区别。当您调用 allElementsBoundByIndex
时,XCUIElement
实例通过 运行 原始查询找到自己,然后在该索引处获得结果。
这意味着如果应用程序 UI 在调用 allElementsBoundByIndex
和实际解析数组中的 XCUIElement
对象之间发生变化,您可能会收到与您在数组中不同的一组元素原本预计。
当您调用 allElementsBoundByAccessibilityElement
时,XCUIElement
实例通过 运行 原始查询找到自己,然后获得与查询时元素具有的可访问性标识符相匹配的结果已创建。
如果应用 UI 在调用 allElementsBoundByAccessibilityElement
和实际解析数组中的 XCUIElement
对象之间发生变化,并且原始元素之一不再存在,应用将抛出一个错误。
我正在学习使用 XCTest
进行 UI 测试。我无法理解 XCUIElementQuery.allElementsBoundByAccessibilityElement
:
Immediately evaluates the query and returns an array of elements bound to the resulting accessibility elements.
"elements bound to the resulting accessibility elements"是什么意思?还有,和allElementsBoundByIndex
有什么区别?
allElementsBoundByAccessibilityElement
的文档不是很好,但我通过使用调试器四处寻找与 allElementsBoundByIndex
的区别。
调用 allElementsBoundByAccessibilityElement
或 allElementsBoundByIndex
将 return 一个包含 XCUIElement
个对象的数组。
let app = XCUIApplication();
app.launch();
let elementsByAccessibilityElement = app.images.allElementsBoundByAccessibilityElement;
let elementsByIndex = allElementsBoundByIndex;
在 returning 这个数组之后,XCUIElement
对象本身并没有真正解析,而是保留对原始查询的引用。
尽管在 XCUIElement
上尝试访问 属性 之类的 .label
...
您将看到该元素通过对可访问性层次结构进行快照来自行解析,然后重新运行 原始查询以查找该元素。您可以在调试控制台中看到这样的输出:
t = 5.76s Get all elements bound by index for: Descendants matching type Other
t = 5.84s Snapshot accessibility hierarchy for app with pid 4267
t = 10.79s Find: Descendants matching type Other
解析元素时这两种方法与 运行 原始查询的最大区别。当您调用 allElementsBoundByIndex
时,XCUIElement
实例通过 运行 原始查询找到自己,然后在该索引处获得结果。
这意味着如果应用程序 UI 在调用 allElementsBoundByIndex
和实际解析数组中的 XCUIElement
对象之间发生变化,您可能会收到与您在数组中不同的一组元素原本预计。
当您调用 allElementsBoundByAccessibilityElement
时,XCUIElement
实例通过 运行 原始查询找到自己,然后获得与查询时元素具有的可访问性标识符相匹配的结果已创建。
如果应用 UI 在调用 allElementsBoundByAccessibilityElement
和实际解析数组中的 XCUIElement
对象之间发生变化,并且原始元素之一不再存在,应用将抛出一个错误。