【问题标题】:Element Query to retrieve top number of elements元素查询以检索最高数量的元素
【发布时间】:2018-05-22 16:49:50
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: xcode-ui-testing uitest xcuitest


    【解决方案1】:

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

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

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

    【讨论】:

    • 虽然您的解释确实很有帮助,但我更多地要求获取元素列表,特别是作为示例前 10 个元素,14 或 5。你认为我应该编辑原始问题中的任何内容吗?
    猜你喜欢
    • 2019-07-16
    • 2020-03-14
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    相关资源
    最近更新 更多