获取第三方应用的控件信息

来自个人维基
2015年7月21日 (二) 12:13Hovercool讨论 | 贡献的版本

(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

本文所说的工具均包含在 Android SDK中,位于 sdk\tools 目录下。

有一些功能需要使用root权限,也有可能需要关闭 SEAndroid,所以当遇到问题时可以考虑使用 eng版本,并关闭 SEAndroid (adb shell setenforce 0)进行验证。

hierarchyviewer.bat

该工具可以帮我们找到 android控件的contentDescription,用作 find_element_by_accessibility_id 参数使用。

工具一打开,首先是进入 selection-view 界面,这个界面显示了当前机器的layer层级结构,例如在普通应用中,微信是在最前端的,在其之上还有 StatusBar等 layer:

Selection-view.png

选中想要查看的layer,点击上方的 Load View Hierarchy, Inspect Screenshot,可以获取该 layer的控件层级关系,其中Load View Hierarchy内容更为详尽,而Inspect Screenshot则更为直观。

Hierarchyviewer-tree.png

通过右下角选中任一控件后,就会在右中的位置显示该控件的 Accessbility(其中的 contentDescription可用于 find_element_by_accessibility_id),Layout,Text(可用于 find_element_by_name)等信息,例如下方截图就是选中“退出”按钮时的情况:

Hierarchyviewer-tree-property.png

点击左下方的 Switch to the pixel perfect view,可以看到之前执行Inspect Screenshot的结果:

Hierarchyviewer-prefect-view.png

上图左方为该 layer的 layout排布(对应设计文件的 xml),这个可以尝试一下用于 find_element_by_xpath定位,中间的是详细的界面坐标和颜色信息,右边则是截图。


uiautomatorviewer.bat

打开后,点击左上方 Device Screenshot按钮(见下图红框标记),可以得到当前界面的截图,通过选取截图上的控件,就可以获得相关信息:

Ui automator.png

如右下角的 resource-id,就可用于 find_element_by_id。

ps. 在android 4.0后面的版本上,appium也正是通过 uiautomator来获取控件的。