Appium щелкает элемент динамического списка

Я пытаюсь автоматизировать щелчок по элементу динамического прокручиваемого списка, содержащего определенный текст. Текст элемента списка передается с использованием вызова API, он может / будет изменен в зависимости от ответа API.

Например, предположим, что у меня есть 3 пункта списка: яблоко, манго и банан. Если я хочу щелкнуть элемент, содержащий текст банан, как я могу это сделать?

Мой инспектор рабочего стола Appium, мой 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. Как я могу это сделать?


person Suban Dhyako    schedule 01.03.2019    source источник
comment
Ваш код пытается? Трассировка стека ошибок?   -  person DebanjanB    schedule 01.03.2019
comment
Я решаю это для Android, используя ** UiSelector.text ('banana').   -  person Suban Dhyako    schedule 01.03.2019


Ответы (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");
}
person Suban Dhyako    schedule 01.03.2019