.element(boundBy: 0) 的 UI 测试代码中的所有实例替换为 .firstMatch 是否安全?

我会这么认为,但是 Apple 的文档对此并不是很清楚(尤其是在多个匹配项的情况下,即使我只关心第一个匹配项)。
https://developer.apple.com/documentation/xctest/xcuielementtypequeryprovider/2902250-firstmatch

最佳答案

您应该将它们链接起来,而不是将 element(boundBy: 0)firstMatch 交换。

XCUIApplication().cells.element(boundBy:0).firstMatch

如果屏幕上有多个单元格,这将使查询更快地解析。如果没有 firstMatch ,测试将首先获取所有单元格的列表,然后使用第一个。使用 firstMatch ,测试将查找单元格并使用它找到的第一个单元格。



您仍然应该在可能有超过 1 个元素与查询匹配的任何地方执行 element(boundBy:) ,以确保当您使用 firstMatch 时,只有一个元素可以匹配该查询。在有 3 个单元格并且您想使用第一个单元格的情况下,您仍然应该使用 element(boundBy: 0) 。如果您知道屏幕上只有 1 个单元格,那么可以跳过 element(boundBy: 0) 并使用 firstMatch 而不是 element 来更快地解析查询。
// fine if there is only one cell
XCUIApplication().cells.element // also checks for multiple matches
// also fine if there is only one cell
XCUIApplication().cells.firstMatch // does not check for multiple matches

关于ios - UI 测试 firstMatch,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46276544/

10-10 20:58