Поиск элементов по xpath в Appium с использованием драйвера XCUITEST

На меня легла задача обновить фреймворк автоматизации. Я новичок в тестировании iOS, поэтому у меня проблемы с новым драйвером XCUITEST в Appium-1.6.0-beta1.

У меня есть драйвер и работает, но большинство элементов расположены с использованием xpaths в фреймворке (совсем не идеально, я знаю), большинство элементов не имеют меток, имен или тегов доступности. Таким образом, локаторы :name на данный момент исключены для 90% элементов.

Похоже, что xpaths ориентированы на старую структуру Apple (UIAutomation) и выглядят следующим образом:

//UIAApplication[1]/UIAWindow[4]/UIAAlert[1]

Я пробовал что-то вроде этого:

//XCUIApplication[1]/XCUIElementTypeWindow[4]/XCUIElementTypeAlert[1]

Они передаются в driver.find_element(:xpath, xpath_value) без везения. Кажется, я не могу найти никакой документации по этому поводу и добился минимального успеха на дискуссионном форуме appium.

Может ли кто-нибудь указать мне рабочий пример или документацию? Есть ли лучший способ сделать это?

Любой вклад действительно поможет!

Спасибо, Питер


person pmck    schedule 23.09.2016    source источник
comment
Есть ли особая причина, по которой вы не можете добавить теги доступности к рассматриваемым элементам?   -  person Aaron Sofaer    schedule 23.09.2016
comment
У меня нет контроля над разработкой, и из-за огромного размера приложения это будет долгий процесс. Я застрял с xpaths для определенных элементов   -  person pmck    schedule 24.09.2016


Ответы (3)


Не все элементы XCUI являются прямой передачей из UIAutomator. Способ, который я использовал, - это запускать тесты без нужных вам xpaths, и когда вы открываете экран, на который хотите пойти:

System.out.println(driver.getPageSource());

Затем нужно прочитать этот XML, чтобы получить желаемый элемент. Гораздо более утомительно, но без инспектора приложений в 1.6BetaX это единственный известный мне способ получить иерархию XCUI.

person JaysonP    schedule 30.09.2016
comment
В настоящее время существует некоторое стороннее программное обеспечение, которое потенциально может упростить эту задачу, например github.com/mykola. -mokhnach/Appium-iOS-Inspector У меня лично не было возможности попробовать его, но, возможно, стоит изучить его, так как печать исходного кода страницы — долгий процесс. - person JaysonP; 24.11.2016

С небольшим обходным решением вы можете использовать старый графический appium, чтобы найти xpath элементов представления для использования с Appium v1.6. Выполните шаг 1 по этой ссылке на носителе: Старый добрый инспектор Appium с небольшим обходным решением

person Hasaan Ali    schedule 24.11.2016

Приведенный выше ответ JaysonP отлично работает, но все же есть способ использовать инспектор appium.

  1. Запустите appium, который вы используете (appium 1.6.x), из терминала/командной строки.
  2. Откройте приложение appium GUI, но НЕ запускайте его
  3. В графическом интерфейсе укажите путь к приложению
  4. Убедитесь, что и версия с графическим интерфейсом, и та, которую вы используете на терминале, используют один и тот же порт. Еще раз НЕ запускайте appium из GUI
  5. Нажмите кнопку «Инспектор», не запуская appium.
  6. Окно инспектора должно быть открыто, и вы можете использовать его так, как вы использовали его ранее.
person Michael Tilahun    schedule 07.12.2016