一、如何运启动UI Automator Viewer?
方法1:若已将Android sdk 加到了path变量中,可直接在终端命令行中输入 uiautomatorviewer 即可启动。
方法2:进入到android sdk的安装目录下,找到tools文件夹,里面可以看到/sdk/tools/uiautomatorviewer,双击该程序即可。
二、UI Automator Viewer 常用功能
- 打开要查找UI元素的界面后,点击左上角工具栏的 “Device screenshot”(绿色按钮),即可获取当前连接的手机界面信息。
1)连接电脑的手机需要打开[开发者选项->允许USB调试]的开关。
2)绿色的按钮()识别出来的元素信息都Android系统的,全部可以UI自动化来控制。(界面出来之后,就可以拔掉手机啦。)
3)红色的按钮()识别出来的元素信息既包括Android系统的,也包括手机硬件(e.g.键盘),这样会导致部分元素无法控制,所以不常用。
- 连接成功后,如上图所示,界面分为三个部分:手机界面区域;/当前界面的布局层级关系;/当前选中控件的属性信息。
1)鼠标在左侧界面区域滑动可以直观的看到当前定位的是哪个位置(红色虚线框标识),且右侧区域会随之变动;
2)若要观察某一个元素的层级关系以及属性信息,可以点击该元素(红色实线框标识),此时,在界面中滑动鼠标时,右侧的数据不会变来变去了;
3)界面布局层级关系视图中,可以看到当前选中的元素,其父节点和子节点的名称、内容、边界坐标等信息。
4)当前选中的控件的属性信息,UI自动化中常用的就是resource-id 和 class(class在Xpath路径中会用到)。
三、其他Tips
1)尽量所有的元素都用resource-id来识别,若当前元素没有resource-id的值,可以向上找该元素的父节点,若父节点也没有,可以找父节点的父节点,直到找到有resource-id的层级为止。
2)同一个页面中,一个list view下有多条list,各条list的resource-id都一样(e.g. 通话记录列表),这种情况下可以让开发添加,或用文案定位,用Xpath路径来定位。 注:上面示例中,‘android.widget.LinearLayout’就是class对应的内容,‘@’后面是属性,咱们只用resource-id就可以了。‘/class’后面若没有属性信息[@resource-id],默认表示寻找第一个。
3)Xpath中的第一层级的类就以当前页面中有唯一resource-id的类为起始,保证能定位到当前元素即可。
更多Xpath语法学习可参考(http://www.w3school.com.cn/xpath/xpath_syntax.asp)