美文网首页
uiautomator2 :获取当前屏幕上相同属性个数...

uiautomator2 :获取当前屏幕上相同属性个数...

作者: work_zhangxt | 来源:发表于2020-03-24 15:46 被阅读0次

    在测试项目的过程中遇到了下面的问题,陆陆续续找了2天问题,终于解决了。。。。

    上图:

    当前页面存在的这几个功能入口的resourceId属性一样,想要判断里面配置的个数,发现每次判断的时候都只能定位到一个,找了很久意外在uiautomator2 提供的API找到了实例

    官网提供的类似API是:

    d(text="Add new").count

    只有这一句,开始运行的时候犯了个错误,在count后面加了(),一直报错,真的哭了。。。。检查之后发现API没有(),晕!然后重新运行通过了但是结果和预期的始终对不上,意外发现了uiautomator2支持Xpath.

    els=d.xpath("//android.widget.LinearLayout[1])

    len(els)

    返回结果还是不正确,然后发现android.widget.LinearLayout下面还有多个子层级

    els=d.xpath("//android.widget.LinearLayout[1]//android.widget.LinearLayout[1]//android.widget.FrameLayout[1]//android.widget.ImageView[1])

    len(els)

    运行后,结果正确

    追更:

    后续项目运行过程中利用xpath,定位还是没有resourceid唯一准确,因为Text会把整个当前屏幕的所有元素都捕获出来,但是想要多个子层级的话会有影响,所以可以把相同属性的元素当做一个list列表看待,例子:

    els = driver(resourceId='com.ygkj.chelaile.standard:id/cll_line_detail_more_action_sheet_item_icon')

    a =len(els)

    这样运行的结果是最准确的。

    相关文章

      网友评论

          本文标题:uiautomator2 :获取当前屏幕上相同属性个数...

          本文链接:https://www.haomeiwen.com/subject/vomoyhtx.html