Я пишу тесты пользовательского интерфейса для приложения, которое содержит огромные ячейки (~ 1000) в своем табличном представлении. Попытка получить доступ к элементам ячейки покажет следующую ошибку:
Не удалось получить совпадающие снимки: истекло время ожидания при оценке запроса пользовательского интерфейса.
Scenar ios :
- Если я попытаюсь получить количество ячеек на
XCUIApplication().tables.firstMatch.cells.count
, будет выдано исключение - Печать
XCUIApplication().debugDescription
для в первый раз печатает всю иерархию (хотя для печати требуется ~ 10 сек) - После этого, если я пытаюсь напечатать точно такую же строку
XCUIApplication().debugDescription
, выдается исключение
Я могу не проверяет количество ячеек и не может получить доступ к элементам ячеек. Система пытается оценить все элементы пользовательского интерфейса всякий раз, когда я получаю доступ к элементу в XCUIApplication()
.
. Это ожидаемое поведение, поэтому я подумал о том, чтобы сделать копию данных XCUIApplication()
локально и обработать мои запросы. с этим локально сохраненным экземпляром. Итак, я попробовал это:
private lazy var dummyApp: XCUIApplication = {
return XCUIApplication()
}()
Здесь я использовал переменную lazy (потому что я хочу вызвать XCUIApplication()
только один раз, чтобы система не делала снимки), которая возвращает экземпляр XCUIApplication()
и попытался напечатать число ячеек как:
dummyApp.tables.firstMatch.cells.count
Это также выдает ту же ошибку.
Вопрос:
Есть ли способ сохранить XCUIApplication()
вся структура с локальной переменной? Или я могу остановить / расширить процесс моментального снимка перед доступом к элементу?
PS: я использую Xcode 11.3.1. Я сталкиваюсь с этой проблемой в течение длительного времени. Публикация этой проблемы как отдельного вопроса, поскольку XCUITest изменил свое взаимодействие с приложением с Xcode 9.