XCUITest — Что еще я могу использовать, кроме режима ожидания, для поиска элемента на экране после нажатия кнопки «Назад»?

#xcuitest

#xcuitest

Вопрос:

У нас есть несколько XCUITests iOS, для которых была нажата кнопка «Назад». После этого щелчка мы делаем что-то еще в тесте (много разных действий в зависимости от теста). Однако на определенных экранах нашего приложения, независимо от того, какой шаг следующий (другое нажатие кнопки, утверждение и т.д.), Тест завершится неудачей, если не будет использован режим ожидания. Похоже, что тест не ожидает следующего экрана, чтобы завершить то, что он делает. Это может быть рисование элементов пользовательского интерфейса, запуск фоновых элементов и т.д. Когда я добавляю режим ожидания на 5 секунд, тесты выполняются нормально и продолжаются до завершения без проблем. Насколько я понимаю, в автоматизации переходы в режим ожидания не идеальны, и их следует избегать, если это возможно. Кроме того, я полагаю, что в XCUITests есть некоторое встроенное время ожидания для ожидания элементов. Однако в этом случае без режима ожидания тест завершается неудачей.

Итак, чтобы улучшить тесты автоматизации, какие предложения мы можем попробовать, помимо перехода в режим ожидания для переходов экрана, подобных этому нажатию кнопки «Назад»?

Ответ №1:

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

Использовать newElement.waitForExistence(timeout: 5)

или

previousElement.waitForDisappearance(timeout: 5)

Возьмите waitForDisappearance здесь https://github.com/devexperts/screenobject

Комментарии:

1. Да, я согласен. Я добавил в некоторые ожидания элементы, которые будут загружаться немного дальше по экрану. Похоже, пока это работает. Ожидание только того элемента, на который мы должны были нажать, с ожиданием по умолчанию, встроенным в XCode, не работало. Мне просто интересно, как XCode находит элемент, но его нельзя использовать. Кажется, что он должен разобраться с этим лучше, чем это происходит. В любом случае, использование этого метода ожидания чего-то другого, что должно загрузиться после нужного мне элемента, является хорошей идеей и, похоже, работает. Спасибо!

2. Я считаю waitForExistence гораздо более полезным, учитывая, что страницы обычно медленно загружаются, а не медленно уходят.