将 .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/