Элемент Query для получения максимального количества элементов - PullRequest
0 голосов
/ 22 мая 2018

Я знаю, что есть переменная 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 голосов
/ 24 мая 2018

Вы можете получить количество элементов, соответствующих вашему запросу, затем вы можете напрямую получить доступ к элементу по последнему индексу.

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

Поскольку firstMatch - это ленивая оптимизация, что-то похожее для последнего элементане было бы оптимизацией - концепция добавления .firstMatch предназначена для предотвращения необходимости отрабатывать полное содержимое списка элементов.К сожалению, XCTest не предлагает обратного обхода иерархии представлений, поэтому при поиске последнего элемента в списке не так много оптимизаций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...