Тестирование. Как построить локатор Xpath для Appium?

android
selenium
xpath
appium
java
Теги: #<Tag:0x00007fedbb8509c0> #<Tag:0x00007fedbb850880> #<Tag:0x00007fedbb850740> #<Tag:0x00007fedbb850600> #<Tag:0x00007fedbb8504c0>

(Lera Leschenko) #1

Автоматизирую гибридное Android приложение. Использую Appium.
Подскажите, как построить Xpath из UI? К примеру имею FrameLayout(1)/ScrollView(0)/LinearLayout(0)/LinearLayout(3)/EditText(0)


(Константин) #2

А у этого элемента нет каких-нибудь свойств text, content-desc или id может есть?
Я так понимаю, что на экране у вас не один элемент EditText? Если совсем больше не к чему прицепится, то собирайте в коллекцию эти элементы по класснейму(можно и с помощью XPath это сделать - //android.widget.EditText) и выбирайте нужный по индексу


(Lera Leschenko) #3

Да, спасибо) //android.widget.LinearLayout[@index='3']/android.widget.EditText[@index='0']" прошло


(Yaroslav Pernerovskyy) #4

а //LinearLayout[3]/EditText[0] разве не рабортает ?


(Lera Leschenko) #5

ну да, работает)


(Yaroslav Pernerovskyy) #6

Отлично, но использование xpath в аппиуме совсем не лучшая идея. Оно может быть как-то оправдано для Андроида версии ниже 4.4. Если у вас приложение на андроиде выше или равно 4.4, то вам должны быть доступны айдишники для нативних элементов. И тогда можно просто делать findElement(By.id("com.android.calculator2:id/digit5"));


(Eugene Moskalenko) #7

мне кажется для более качественной записи элемента в пейдже, стоит себя ограничить какими-то правилами при поиске элементов:

  1. искать по resource_id или content-desc (чаще всего resource_id доступен)
  2. комбинировать text или index с resource_id
  3. для List обычно использую resource_id + index
  4. xpath - либо вообще не юзать, либо юзать только тогда, когда больше не за что зацепиться

(Любовь Мирошниченко) #8

Можно пример использования resource_id + index?
У меня на странице 30 элементов с одинаковым id, индекс выставляется только тем, что в зоне видимости (если сделать swipe , то все индексы смещаются. Нативное приложение под Android