鸦片点击动态列表项

时间:2019-03-01 08:58:08

标签: selenium automated-tests appium appium-android

我正在尝试自动单击包含特定文本的动态可滚动列表项目的项目。列表项的文本正在使用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 :(得分:0)

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