XCUITest ожидает ячейку с определенным статическим текстом внутри нее - PullRequest
0 голосов
/ 28 июня 2019

У меня есть представление коллекции с некоторыми элементами. Во время моих тестов пользовательского интерфейса я нажимаю кнопку, и это вызывает сетевой запрос, который, когда завершится, вставит ячейку в это представление сбора с индексом 0. Хотя этот сетевой запрос поступает с локального сервера, он по-прежнему принимает секунда или две для завершения.

Я хочу дождаться ввода новой ячейки и проверить правильность значений. Это будет визуальным подтверждением того, что функционирование кнопки работает.

Как бы я поступил так? Я не могу использовать application.collectionViews.cells.element(boundBy: 0), потому что в этой позиции уже есть ячейка, поэтому он найдет ее немедленно, но у нее будут неправильные значения.

Мне нужно запросить ячейки представления коллекции по их подпредставлениям. Примерно так:

let predicate = NSPredicate(format: "staticTexts['Title Label I'm after'].exists == 1")
application.collectionViews.cells.element(matching: predicate)

Но это не работает, на самом деле происходит сбой, предположительно из-за того, что staticTexts недоступен для распознавателя предикатов.

Другая вещь, о которой я думал, - это то, что я создаю свою собственную версию XCTestExpectation, которая запускается каждую секунду и запускает обработчик, который будет брать первую ячейку и проверять ее содержимое.

1 Ответ

2 голосов
/ 28 июня 2019

Понял, вы должны использовать containing вместо matching в списке cells, как показано ниже:

let predicate = NSPredicate(format: "label == 'Title Label Value'")
let cell = application.collectionViews.cells.containing(predicate).firstMatch
wait(forElement: cell, timeout: timeout)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...