Поиск локаторов в iOS приложениях
t.me/qa_chilloutИспользование Appium Inspector для поиска элементов в iOS-приложениях может быть полезным при автоматизации тестирования мобильных приложений. Appium Inspector предоставляет графический интерфейс для взаимодействия с приложением и поиска локаторов (элементов) для автотестов. В этой статье я расскажу вам, как использовать Appium Inspector для поиска локаторов в iOS-приложениях.
Ранее мы уже разбирали подробно что такое локатор, об этом можно подробнее прочитать здесь. А также устанавливали, настраивали Appium Inspector и Appium Server, строили локаторы в Android-приложении, об этом также можно прочитать здесь.
Настройка окружения
Шаг 1 – Установка XCode
Подробный гайд по установке XCode и запуск симулятора рассмотрен в официальной документации.
Как только вы создадите симулятор, вам необходимо будет запомнить версию iOS созданного устройства, а также его имя, например iPhone 12 Pro Max. Это можно посмотреть в информации о симуляторе:
Шаг 2 – Установка Appium
- установить Appium на свой компьютер, скачав его с официального сайта.
- установить необходимые зависимости, такие как Node.js, Xcode и другие, в зависимости от вашей ОС и конфигурации.
- запустить Appium Server. Это можно сделать как через командную строку, так и графический интерфейс Appium Desktop.
Шаг 3 – Запуск Appium Inspector
Откройте Appium Desktop и настройте параметры сервера, такие как адрес и порт. Затем нажмите кнопку «Start Server».
Эти два шага были рассмотрены ранее в статьях, указанных выше, мы не будем их разбирать подробно. А вот следующие шаги уже отличаются.
В Appium Inspector вам нужно будет указать следующую конфигурацию:
- информацию о платформе (iOS),
- версия iOS,
- имя устройства,
- путь до приложения.
{ "platformName": "iOS", "appium:deviceName": "iPhone 12 Pro Max", "appium:version": "15.5", "appium:app": "/Users/s.yakovlev/Desktop/Wikipedia.app", "appium:automationName": "XCUITest" }
В качестве примера, мы возьмем приложение Wikipedia. Проект можно скачать и собрать самостоятельно в XCode, он расположен тут: https://github.com/wikimedia/wikipedia-ios. Либо можно скачать уже собранный .app. Финальная настройка Capabilities будет выглядеть следующим образом:
Шаг 4 – Поиск локаторов
После настройки сессии Inspector, нажмите кнопку «Start Session». Appium Inspector попытается установить соединение с вашим созданным симулятором iOS.
В левой части Appium Inspector вы увидите дерево элементов приложения, а в правой части вы увидите свойства выбранного элемента. Вы можете выбирать элементы из дерева и просматривать их атрибуты.
Для поиска локаторов, вы можете использовать различные стратегии поиска, такие как поиск по имени, поиск по типу элемента и так далее. Выберите элемент, который вам нужно найти, и Appium Inspector автоматически сгенерирует локатор для этого элемента.
Поиск локаторов
Рассмотрим несколько примеров обращения к различным элементам приложения. Начнем с самого простого – кнопки Далее. Для этого в Appium Inspector кликнем на саму кнопку Далее на экране приложения и справа отобразятся доступные свойства кнопки:
В Appium Inspector имеется несколько вариантов обращения к каждому из элементов. Все зависит от конкретной ситуации и структуры приложения. Разберем те варианты, что представлены на скриншоте:
iOS Class Chain
Из плюсов – это такая стратегия поиска, которая позволяет находить элементы на основе их иерархии классов. Она обычно более производительна, чем XPath.
Из минусов – требует более глубокого понимания структуры приложения и могут потребоваться сложные выражения для поиска конкретных элементов.
iOS Predicate String
Из плюсов – предикатные строки предоставляют гибкий и мощный способ поиска элементов, основанный на их атрибутах и свойствах.
Однако к минусам можно отнести то, что iOS Predicate String могут быть более сложными для понимания и написания, особенно если вы не знакомы с языком предикатных строк.
XPath
А вот XPath – это универсальная стратегия поиска, которая может использоваться для поиска элементов в различных ситуациях и на разных платформах (iOS, Android, WEB). Но как мы и обсуждали в других статьях, XPath может быть менее производительным такие локаторы могут ломаться при малейших изменениях в структуре приложения.
Мы выберем XPath //XCUIElementTypeStaticText[@name="Далее"]
, но прежде, чем его использовать в автотесте, давайте проверим в самом инспекторе, ищется ли элемент по данному пути, а также можно ли на него кликнуть. Чтобы скопировать построенный локатор, нажмите правой кнопкой мыши на элементе в дереве и выберите «Copy XPath». Затем выберите в инспекторе «Поиск» и в диалоговое окно вставьте ваш скопированный XPath:
А затем попробуем на него нажать:
У нас открывается после нажатия следующий экран, а это значит, что элемент кликабельный:
Теперь у вас есть локатор, который вы можете использовать в своих тестах Appium для взаимодействия с этим элементом в iOS-приложении.
Рассмотрим еще один пример – поле поиска:
Как вы могли уже заметить, тут появился еще один вариант – Accessibility ID.
Accessibility ID – это атрибут, который разработчики могут назначить элементам для облегчения автоматизации. Этот атрибут обычно имеет уникальное имя для каждого элемента, что делает поиск элементов простым и надежным. Сам поиск по Accessibility ID обычно более производителен, чем XPath, потому что нет необходимости выполнять сложные вычисления пути. А также использование Accessibility ID делает ваш код более читаемым, так как элементы могут быть идентифицированы по их логическим именам, что облегчает понимание и поддержание кода.
Если в приложении поддерживаются Accessibility ID, и они уникальны для каждого элемента, то это более предпочтительный способ для поиска элементов.
Попробуем проверить данный локатор и ввести в поле поиска поисковой запрос. Скопируем Accessibility ID, вставим его в диалоговое окно поиска элементов и выполним поиск по Id:
Элемент найден, а это значит, что мы можем в поле Enter keys to send ввести любой поисковой запрос:
Поле активно и в него можно вводить данные, а значит что и в автотесте с данным полем у нас не будет проблем:
Стоит отметить, что локализация нашего симулятора на русском языке, если же вы будете использовать симулятор на английском языке и, например, accessibility id = Поиск по Википедии
, то с большей долей вероятности, этот текст будет также на английском языке «Wikipedia Search» и ваш тест упадет по причине «элемент не найден». Стоит разрабатывать тесты с учетом локализации.
Это основные шаги по использованию Appium Inspector для поиска локаторов в iOS-приложениях. Бывают случаи, когда у элемента приложения нет идентификатора, в таком случае просите разработку добавить id элементу, либо используйте XPath. Но помните, что XPath не стабильный и долго ищется путь во время теста.
Обсудить статью, узнать больше можно в телеграм канале «Тестировщики нужны».