元素查询以检索最多元素

时间:2018-05-22 16:49:51

标签: xcode-ui-testing uitest xcuitest

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

现在,我一直在使用allElementsBoundByIndex接收整个数组,只是迭代我需要的数字。

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

由于firstMatch是一个惰性优化,最后一个元素的类似内容不是优化 - 添加.firstMatch的概念旨在防止需要计算列表的全部内容元素。不幸的是,XCTest不提供反向视图层次结构遍历,因此在查找列表中的最后一项时,您无法进行大量优化。