Автоматизирую гибридное Android приложение. Использую Appium.
Подскажите, как построить Xpath из UI? К примеру имею FrameLayout(1)/ScrollView(0)/LinearLayout(0)/LinearLayout(3)/EditText(0)
А у этого элемента нет каких-нибудь свойств text, content-desc или id может есть?
Я так понимаю, что на экране у вас не один элемент EditText? Если совсем больше не к чему прицепится, то собирайте в коллекцию эти элементы по класснейму(можно и с помощью XPath это сделать - //android.widget.EditText) и выбирайте нужный по индексу
а //LinearLayout[3]/EditText[0] разве не рабортает ?
ну да, работает)
Отлично, но использование xpath в аппиуме совсем не лучшая идея. Оно может быть как-то оправдано для Андроида версии ниже 4.4. Если у вас приложение на андроиде выше или равно 4.4, то вам должны быть доступны айдишники для нативних элементов. И тогда можно просто делать findElement(By.id(“com.android.calculator2:id/digit5”));
мне кажется для более качественной записи элемента в пейдже, стоит себя ограничить какими-то правилами при поиске элементов:
- искать по resource_id или content-desc (чаще всего resource_id доступен)
- комбинировать text или index с resource_id
- для List обычно использую resource_id + index
- xpath - либо вообще не юзать, либо юзать только тогда, когда больше не за что зацепиться
Можно пример использования resource_id + index?
У меня на странице 30 элементов с одинаковым id, индекс выставляется только тем, что в зоне видимости (если сделать swipe , то все индексы смещаются. Нативное приложение под Android