Python3+Appium学习笔记09-元素定位android_uiautomator
appium是使用了uiautomator的框架的,所以uiautomator所带的定位方式。appium也是支持的
需要使用appium中find_element_by_android_uiautomator()方法
示例基本都已百度app为例
1)text定位
1.通过text文本来定位
2.类似模糊匹配,只要包含text内容
3.通过text开头内容来定位
4.通过正则匹配
四个方法效果全是点击百度app的搜索框。执行时要把另外三个给注释掉。
2)resourceId
resourceId等价于by_id
点击百度app的搜索框
3)className
就是用class的值,等价于class_name
点击百度app的搜索框
class一般都是有重复的,要用find_elements。这里正好是唯一的。
4)description
使用content-desc的值定位,等价于accessibility_id
效果是打开百度app,点击右上角的产品大全按钮
5)组合定位
可以使用两个定位方式组合在一起来定位。一般使用id,class,text这三个属性来组合。
效果是打开百度app,点击搜索旁边的拍照按钮
6)父子层级
使用childSelector
当一个元素很难定位的时候,可以先定位到他的父元素,然后再定位到这个子元素
比如百度app的这个频道管理按钮,和频道管理平级的三个元素class全是不一样的。我们先定位到父元素,再来定位到他
执行代码,会打开百度app,然后点击频道管理
可以看到如果直接通过class去定位,会有22个重复的元素。当先定位到父元素,再通过class去定位,能直接定位到该元素。
7)兄弟层级
使用fromParent
这个就是通过同层级的某元素,去定位另外一个同层级的元素
这次通过先定位到频道管理,然后再定位到朗读的按钮
执行代码,会打开百度app,然后点击朗读按钮
可以看到如果直接通过class去定位,会有10个重复的元素。当先定位到同层级元素,再通过class去定位,能直接定位到该元素。
Uiautomator还有很多定位方式,感兴趣可以百度一下,比如id,text也可以使用正则。