Python3+Appium学习笔记08-元素定位
appium整合了不同的自动化测试驱动程序。而新版本appium desktop 中安卓是使用UI Automator2来作为驱动程序的。以前版本是使用UI Automator1或 Selendroid。所以参数中需要加上 'automationName': 'uiautomator2'指定驱动程序。第一次使用这个参数的时候,会安装一个sever程序。
另外就是元素操作的时候,需要打开开发者选项中的USB模拟点击权限。
定位方式大部分是和selenium一样的。小部分是安卓和ios对应驱动中特有的。
同样也有find_element(单个元素)和find_elements(多个元素)两种模式,后者定位返回的是一个数组。
1)id定位
使用UI Automator Viewer上对应resource-id的值
代码效果是会打开淘宝App,然后点击搜索框
2)name定位
使用UI Automator Viewer上对应text的值
在较新的版本已经不能使用name来定位,如果使用name的api来定位会报错
3)className定位
tab_name定位的方法已被该方法取代
使用UI Automator Viewer上对应的class值,但是一般class值不是唯一的
因为classname基本都不会是唯一的,所以使用find_elements。我这边定位到42个。
4.accessibility_id定位
官方文档说安卓是用该方法取代name定位方法
使用UI Automator Viewer上对应的content-desc
使用了百度app来演示。效果是打开百度后,点击右上角的产品大全按钮
5.xpath定位
使用xpath来定位
代码效果是打开百度,然后点击搜索框
官方文档和appium desktop定位工具都提示说尽量不要使用xpath去定位,不稳定。
这些方法都是在Native(大致理解手机桌面上的应用)中常用的,还有一些是webview(浏览器应用,或者打开的是个页面,H5这种)中使用的
如这些是在webview中使用的
另外还提供了一些定位的方法
data_matcher 是Espresso驱动程序中DataMatcher定位方式。看源码要去下载插件
viewtag 好像是安卓一个样式标签?
custom 是完全不知道干嘛的
image 是用来定位64位编码的图片。但是好像需要安装一些插件