Поиск локаторов в iOS приложениях

Поиск локаторов в 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 не стабильный и долго ищется путь во время теста.

Обсудить статью, узнать больше можно в телеграм канале «Тестировщики нужны».

Report Page