【问题标题】:Unable to locate child elements using uiautomator (java)无法使用 uiautomator (java) 定位子元素
【发布时间】:2016-12-22 08:19:16
【问题描述】:
@AndroidFindBy (uiAutomator = "new UiSelector().className(\"android.support.v7.widget.RecyclerView\").childSelector(new UiSelector().className(\"android.widget.RelativeLayout\"))")
public List<MobileElement> listOfElements;

System.out.print(listOfElements.size());

这将返回 1。

所以有一个元素“android.support.v7.widget.RecyclerView”包含9个元素“android.widget.RelativeLayout”。那些我想得到一个列表,但我只得到一个带有上述定位器的元素。我在这里做错了什么?

如果我在定位器末尾添加 .index() ,那么它将根据指定的索引号给我一个元素,但我需要一个所有子元素的列表。

appium 是否支持所有 UiSelector 命令?因为其中一些似乎不起作用(例如您可以键入正则表达式的 classNameMatches,或者 fromParent、scrollable ......)

【问题讨论】:

    标签: java android automation appium


    【解决方案1】:

    你可以使用下面的父子类策略,

    WebElement l1 = driver.findElementByClassName("android.support.v7.widget.RecyclerView\");               
                    //All elements in big container L1
                    List<WebElement> l2 = l1.findElements(By.className("android.widget.RelativeLayout\));               
                    System.out.println("size of L2= " + l2.size());
                    for(int i = 0 ; i<l2.size();i++){
                        System.out.println("\n Index is : " + i + "Content-desc is : " + l2.get(i).getAttribute("name"));
    
                }
    

    根据需要修改循环

    【讨论】:

    • 谢谢,这我知道,但我正在使用 PageFactory。我想学习使用 uiAutomator 选择器,但有些东西对我不起作用,这就是我想弄清楚的。
    猜你喜欢
    • 2015-10-30
    • 1970-01-01
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多