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");
}
Другие вопросы по тегам