在测试项目的过程中遇到了下面的问题,陆陆续续找了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)
这样运行的结果是最准确的。