我知道有一个firstMatch变量可用于获取查询找到的第一个元素。 但是,我无法找到任何内容来检索找到的第一个或最多个元素。
现在,我一直在使用allElementsBoundByIndex接收整个数组,只是迭代我需要的数字。
如果没有办法轻松获得顶级元素,我该如何优化呢?
编辑: 这是我用来处理它的代码。
var listOfCells = app.cells.matching(predicateIDStartsWith(string)).allElementsBoundByIndex
while 0<listOfCells.count {
let reply = handler(listOfCells.removeFirst())
if reply > 0 {
return reply
}
}
答案 0 :(得分:0)
您可以获得与查询匹配的元素数,然后您可以直接访问最后一个索引处的元素。
let app = XCUIApplication()
let query = app.cells
let cellCount = query.count
let lastCell = query.element(boundBy: cellCount - 1)
由于firstMatch
是一个惰性优化,最后一个元素的类似内容不是优化 - 添加.firstMatch
的概念旨在防止需要计算列表的全部内容元素。不幸的是,XCTest不提供反向视图层次结构遍历,因此在查找列表中的最后一项时,您无法进行大量优化。