在这个系列的上一篇文章中,我们介绍了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的设备,就使用模拟器吧。