0

我知道有一个 firstMatch 变量可用于获取查询找到的第一个元素。但是,我找不到任何东西来检索找到的第一个或最多的元素。

现在,我一直在使用 allElementsBoundByIndex 来获取整个数组,并且只遍历我需要的数字。

如果没有办法轻松获得顶级元素,我该如何优化呢?

编辑:这是我用来处理它的代码。

var listOfCells = app.cells.matching(predicateIDStartsWith(string)).allElementsBoundByIndex
while 0<listOfCells.count {
    let reply = handler(listOfCells.removeFirst())
    if reply > 0 {
        return reply
    }
}
4

1 回答 1

0

您可以获得与查询匹配的元素的计数,然后您可以直接访问最后一个索引处的元素。

let app = XCUIApplication()
let query = app.cells
let cellCount = query.count
let lastCell = query.element(boundBy: cellCount - 1)

由于firstMatch是惰性优化,因此对最后一个元素进行类似的优化不会是优化 - 添加的概念.firstMatch旨在防止需要计算出元素列表的全部内容。不幸的是,XCTest 不提供倒置视图层次遍历,因此在查找列表中的最后一项时,您可以做的优化不多。

于 2018-05-24T07:25:10.283 回答