#android #appium #ui-automation
#Android #appium #пользовательский интерфейс-автоматизация
Вопрос:
Я хотел бы нажать на первый android.widget.Отредактируйте текстовый элемент из источника страницы ниже. Источник не содержит никакого полезного идентификатора ресурса
Я уже сделал запрос xpath //*[./*[@text='Österreich']]/*[@class='android.widget.EditText'][1]
, проблема в том, что я не могу использовать запрос xpath в этом месте, я могу использовать только UiSelector, и у меня не так много опыта работы со сложными селекторами через UiSelector.
<android.view.View index="6" package="com.android.chrome" class="android.view.View" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[15,711][465,800]" displayed="true">
<android.view.View index="0" package="com.android.chrome" class="android.view.View" text=" " checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[15,711][465,800]" displayed="true" />
<android.view.View index="1" package="com.android.chrome" class="android.view.View" text="Rechnungsadresse" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[15,711][465,744]" displayed="true" />
<android.view.View index="2" package="com.android.chrome" class="android.view.View" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[15,759][465,800]" displayed="true">
<android.widget.Spinner index="0" package="com.android.chrome" class="android.widget.Spinner" text="Österreich" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[15,759][465,800]" displayed="true" />
<android.widget.EditText index="1" package="com.android.chrome" class="android.widget.EditText" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[15,799][465,800]" displayed="true" />
<android.widget.EditText index="2" package="com.android.chrome" class="android.widget.EditText" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[15,799][465,800]" displayed="true" />
<android.widget.EditText index="3" package="com.android.chrome" class="android.widget.EditText" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[15,799][465,800]" displayed="true" />
<android.widget.EditText index="4" package="com.android.chrome" class="android.widget.EditText" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[15,799][465,800]" displayed="true" />
<android.widget.EditText index="5" package="com.android.chrome" class="android.widget.EditText" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[15,799][465,800]" displayed="true" />
Я пробовал следовать, но это не работает
new UiScrollable(new UiSelector().scrollable(true))
.scrollIntoView(new UiSelector().text("Österreich")
.fromParent(new UiSelector()
.childSelector(new UiSelector().className("android.widget.EditText").instance(0))
)
)
в качестве кода на Java я использую getDriverWait().findElement(MobileBy.AndroidUIAutomator(uiSelectQuery)).click()
У вас есть какие-либо идеи, как это сделать? Или ссылка для хороших примеров, как использовать UiSelector?
Android, привязанный UiSelector, UIAutomator, Appium, UiScrollable
Ответ №1:
Я действительно смотрел на этот вопрос, надеясь на ответ. При тестировании больше на моей стороне, я считаю, что для вас должно сработать следующее
new UiSelector().className(android.widget.Spinner).childSelector(new UiSelector().className(android.widget.EditText).index(0))
Я не думаю, что вам действительно нужен индекс, когда это первый дочерний элемент, но все же.