app自动化元素定位方式
定位元素的两种方式
1.使用Uiaotomator(已安装sdk)
2.使用Weditor(已下载weditor)
使用Uiaotomator
位置
在android sdk 的tools文件夹下C:\Users\Administrator\AppData\Local\Android\android-sdk\tools\uiautomatorviewer.bat(找要自己的\android-sdk\tools\目录下的uiautomatorviewer.bat文件)
打开
双击既可以打开,会打开两个窗口,
一个是cmd,另一个是 UI Automator View
捕捉手机屏幕
首先需要PC和android通过USB连接,adb devices 命令可以查看到设备信息。
接下来在UI Automator View 中,点击左上角的第二个图标,捕捉手机屏幕(仅捕捉当前手机停留的页面;若切换页面需重新点击才会刷新)
元素定位
在左侧点击元素,在右下角查看元素的属性信息,右上角查看布局信息
主要属性:
index、text(name)、resource-id(id)、class、package、content-desc(name)
使用Weditor
Android SDK内置工具uiautomatorviewer.bat,在运行uiautomator2的时候,uiautomatorviewer.bat运行不起来,两者之间冲突太严重。故而推荐使用Weditor
安装方法
命令行运行:pip install --pre weditor
使用方法
首先命令行运行python -m weditor,之后浏览器会自动打开一个网页(若页面打开异常或显示异常,可拷贝连接切换浏览器试试)
重点说下这个部分
先忽略iOS和Neco这两个,直接选择Android。输入框中可以写设备号(使用adb devices可获取到)或者设备的Serial(序列号);跟上面提到的配置手机设备参数用法一致。之后点击Connect,如果一切正常就会出现一个绿色的叶子。
页面刷新时,点击蓝色的Reload按钮重新刷新。
连接上之后点击想要定位的元素会自动生成定位到他的方法,可以将方法直接复制出来使用
定位方式
ResourceId定位:
d(resourceId=" com.netease.cloudmusic:id/a7k ").click()
Text定位
d(text="推荐").click()
Description定位
d(description="播放暂停").click()
ClassName定位
d(className=" android.widget.ImageView ").click()
对于多个相同的元素定位:
如果页面存在多个相同的元素可以使用instance进行选择;
三个相同的元素他们的resourceid和ClassName选择一个即可然后在使用instance:
第一个:
d(resourceId="com.netease.cloudmusic:id/a6w", className="android.widget.ImageView").click()
第二个:
d(resourceId="com.netease.cloudmusic:id/a6w", className="android.widget.ImageView", instance=1).click()
第三个:
d(resourceId="com.netease.cloudmusic:id/a6w", className="android.widget.ImageView", instance=2).click()
备注:可以使用weditor直接生成定位方法;