本文章转载于搜狗测试
在这个系列的上一篇文章中,我们介绍了MonkeyRunner,并提到如果根据坐标来编写自动化脚本的话存在着一定的局限性(点击文末“阅读原文”可以打开这篇文章查看)。这篇文章将进一步介绍根据控件的id来编写自动化脚本的方法
根据控件的id来操作控件
从Android 2.3.3开始,MonkeyRunner增加了EasyMonkeyDevice和By这两个类,它们都位于com.android.monkeyrunner.easy包内,借助这两个类,我们就可以根据控件的id来操作控件。
在这个系列的上一篇文章中,我们展示了搜狗手机浏览器在进入设置页面后,不同的分辨率下控件的绝对坐标并不相同。
这时如果我们想要点击其中一个控件,比如说更换皮肤,就要用到下面的方法:
其中id/rl_preference_skin就是更换皮肤这个控件的id,那么怎样才能知道每个控件的id是什么呢?可以借助Adt的另外一个工具HierarchyViewer
使用HierarchyViewer查看控件的id
HierarchyViewer的可执行文件叫做hierarchyviewer.bat,跟monkeyrunner.bat在同一个目录下,运行后会出现这样的界面
列表中列出了正在运行中的Activity,点击搜狗手机浏览器设置界面的Activity——,可以解析出整个界面的布局,这个过程可能稍微有些慢。
应用的布局有时是非常复杂的,我们不需要一点一点的找,可以在右下角的示意图中点击我们想查看的控件,这时控件就会在左侧的控件树中被选中。
在左侧的控件树中,列出了控件的基本信息,比如我们需要的控件id。
最后需要说明的是,根据控件的id来操作控件要求设备开启了ViewServer,现在大部分设备都是没有开启ViewServer的,如果实在找不到开启了ViewServer的设备,就使用模拟器吧