Appium 点击动态列表项

Appium clicking dynamic list item

我正在尝试自动单击包含特定文本的动态可滚动列表项的项目。列表项的文本正在使用 api 调用获取,它 may/will 根据 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>

我想selectandroid.widget.TextView中包含某些文本的项目。我怎样才能做到这一点?

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