美文网首页
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