Appium щелкает по элементу динамического списка - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь автоматизировать щелчок по элементу динамически прокручиваемого списка, содержащего определенный текст.Текст элемента списка получает вызов 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 Ответ

0 голосов
/ 01 марта 2019

Я решаю это с помощью 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 description

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");
}
...