t.me/atinfo_chat Telegram группа по автоматизации тестирования

Поиск локаторов в iOS через Appium или как еще?

xpath
locators
appium
ios
mobile
python
Теги: #<Tag:0x00007fb304a53318> #<Tag:0x00007fb304a531d8> #<Tag:0x00007fb304a53098> #<Tag:0x00007fb304a52f30> #<Tag:0x00007fb304a52df0> #<Tag:0x00007fb304a52cb0>

(Артём Кузьменко) #1

Всем привет.

Нормальных идентификаторов нет, поэтому ищу элементы через xpath. Но то, что мне предлаает инспектор не всегда подходит. Например есть атрибут name, но по факту все имя не влазиет и имя сокращается и добавляется “…”. И когда я беру локатор вот так:

    def get_team_name_locator(self, name):
        return f"//XCUIElementTypeButton[@name='{name}']"

У меня возникают проблемы при ассертах, т.к. имя не равно тому, которое отображается по факту.
Подскажите, пожалуйста как взять полный xpath путь к элементу в appium инспекторе? А то он показывает наиболее удачный локатор, но он мне не подходит. Не писать же руками этот длиннючий лоатор самому. Может еще какие-то инструметы есть?


Я понимаю ,что такие локаторы использовать нельзя, н пока не введут идентификаторы мне без них никуда.


(Vladislav Sobol) #2

Не используйте xPath, ваши тесты будут ооочень медленными.
Если нет возможности работать с нормальными id то лучше использовать:

  1. IOSclassChain он похож синтаксисом на xpath
  2. IOSNsPredicate

Оба эти варианта по скорости сравнимы с id.
Также пробуйте договариваться с разрабами чтобы давали id элементам.


(Артём Кузьменко) #3

Спасибо. Пообщался с разработчиками на эту тему. Обещали сделать.

Скажите, а как использовать ожидания WebDriverWait когда мы используем локаторы для мобильных устройств? Все точно так же?


(Vladislav Sobol) #4

Да, все точно также, например

    WebDriverWait wait = new WebDriverWait(driver, sec);
     wait.until(ExpectedConditions.elementToBeClickable(someElement));