Appium: как отличить два разных экрана iOS?

#xpath #automated-tests #appium #appium-ios

#xpath #автоматизированные тесты #appium #appium-ios

Вопрос:

Я разрабатываю алгоритм тестирования для наших приложений iOS с использованием Appium. Для полной реализации этого алгоритма мне нужно определить, перешел ли я на другой экран или все еще нахожусь на том же экране после выполнения какого-либо действия. Мне нужно знать, что делает каждый экран уникальным / отличным от других с точки зрения Appium?

Просматривая pageSource каждого экрана, я обнаружил, что большинство экранов имеют атрибут xpath в элементе window. Могу ли я использовать значение xpath элемента window, чтобы пометить экран как уникальный от других, или мне нужно выполнить тривиальное сравнение строк между источниками страниц экрана, чтобы пометить их разными? Или есть какое-либо другое лучшее решение?

Ответ №1:

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

Итак, чтобы проверить разные экраны, вам может потребоваться выяснить, что это за контейнер, и посмотреть, изменяются ли свойства контейнера при переходе на новый экран (т.Е. Новый контейнер)

Если пользователь вашего приложения использует другой заголовок для каждого нового экрана, то вы можете использовать этот заголовок, чтобы увидеть, изменился ли экран. Пример: в WhatsApp вы бы увидели разных пользователей вверху. Итак, в этом случае имя пользователя может быть принято в качестве заголовка.

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

Ответ №2:

Для нашего пакета автоматизации at work я реализовал серию шагов проверки экрана. Каждый раз, когда мы переключаем экраны, я выполняю команду find_element для элемента на этом экране, который уникален для этого экрана. Таким образом, если кнопка или опция приведет меня к новому экрану, который является неправильным, мой тест завершится неудачей, как и ожидалось. Если он находит элемент, который мы ожидаем, это добавляет минимальное время к набору тестов.

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