Appium щелкает по элементу динамического списка
Я пытаюсь автоматизировать щелчок по элементу динамического прокручиваемого списка, содержащего определенный текст. Текст элемента списка получает с помощью вызова API, он может / будет изменен в зависимости от ответа API.
Например, предположим, у меня есть 3 элемента списка, скажем, яблоко, манго и банан. Если я хочу нажать на элемент, который содержит текст банан, как я могу это сделать?
Мой Appium Desktop инспектор мой XML-файл для динамического списка выглядит следующим образом
<android.view.ViewGroup content-desc="Dashboard_lv_Container"> <android.view.ViewGroup> <android.widget.ListView content-desc="Dashboard_lv"> <android.widget.LinearLayout> <android.view.ViewGroup> <android.widget.FrameLayout content-desc="item_1"> <android.view.ViewGroup> <android.view.ViewGroup> <android.widget.TextView> <android.view.ViewGroup> <android.widget.ImageView> <android.widget.LinearLayout> <android.view.ViewGroup> <android.widget.FrameLayout content-desc="item_2"> <android.view.ViewGroup> <android.view.ViewGroup> <android.widget.TextView> <android.view.ViewGroup> <android.widget.ImageView>
Я хочу выделить элемент с определенным текстом, содержащимся в android.widget.TextView. Как я могу это сделать?
1 ответ
Я решаю это с помощью UiSelector
try {
MobileElement element=driver.findElement(MobileBy.AndroidUIAutomator("new UiSelector().text(\"banana\")"));
element.click();
}catch (org.openqa.selenium.NoSuchElementException e){
System.out.println("Element not found");
}
Для прокручиваемого списка я сделал это, используя описание UiScrollable
try {
MobileElement element=driver.findElement(MobileBy.AndroidUIAutomator("new UiScrollable(\"new UiSelector().description(\"Dashboard_lv\")\").getChildByText(\"new UiSelector().text(\"banana\")\")"));
element.click();
}catch (org.openqa.selenium.NoSuchElementException e){
System.out.println("Element not found");
}