之前做过一个自动化测试的小工具,在这里分享下,如何快速获取 android 手机上的元素的定位。
现有的工具有 uiautomatorviewer, macaca, uiautomatorviewer 用起来感觉不稳定,有时获取异常,切换页面需要重启 bat 文件,macaca 用起来稳定点,体验还不错,只是有时页面层次很多,需要不断点击找到我们想要的元素。在工作之余,自己分析了这些工具实现的大概原理,获取界面元素文件,进行解析,再投影到软件上。基于原始的原理,我发现 android 手机里面都有一个 getevent 服务,adb shell 进入系统运行,可以获取手机的所有事件接收设备,根据名称或挨个尝试(可以通过 python 开发小工具, 利用 input 发送点击事件,监听事件有输出则为接收用户点击设备),可以找出接收用户点击响应的设备编号,根据这个编号可以获取用户点击的相关信息,都是 16 进制,可以解析出坐标,是否长按信息。不同品牌手机显示的事件定义不一样,需要进行适配。
有了这个信息,再结合导出页面元素的 xml 文件,我们可以实现在手机上点击一个元素,自动输出该元素的相关定位属性信息,基于这个还可以做脚本录制,目前的准确性还需要提升。