我正在尝试自动单击包含特定文本的动态可滚动列表项目的项目。列表项的文本正在使用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 中包含某些文本的项目。我怎样才能做到这一点?
答案 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");
}