Robotium自动化测试 - 定位
4. 已知控件id,如何模拟按键
我们知道,android每个控件都有一个类似R.id.xxxx字符串id。在做白盒测试的时候,将被测试的代码包import一下,直接调用R.id.xxxx就可以了。
但是在黑盒测试的时候,我们只有apk,没有源代码,怎么获取控件的id呢?
java已经给我们提供了这个工具。只需要在cmd下面输入hierarchyviewer即可调出控件查看工具(如果cmd不认识你的hierarchyviewer,说明你的环境变量没有配置正确):

选中需要查看的应用,点击:"Load View Hierarchy":
如下id/后面的"Button01"即为button的id。

1. 根据button上面的文字。这个很简单,直接solo.clickOnButton("Multiply");即可。
2. 根据控件的坐标。hierarchyviewer是可以查看每个点的坐标的。但是使用起来不是很直观,尤其是对不同分辨率屏幕的手机时,使用起来可能还存在兼容性问题。
如果控件上没有文字,clickOnButton就用不了,例如很多应用用图片作为button的说明,clickOnButton就不奏效。用坐标又很麻烦不直观。可否用控件的id呢?
怎么用id,我也纠缠这个问题好几天,网上中文资料搜不到,搜英文,英文搜不到换关键字搜,始终找不到一个比较完整的使用说明。我只好自己一个个命令的试,搞了2天总算找到一个方法,这个方法对于java高手可能不值一提,但对我从未用过java的人来说,确实费了不少周折。
我的方法如下,先获取到控件的view:
solo.getCurrentActivity().getResources().getIdentifier,
然后再用solo.clickOnView即可。
我在使用的时候,简单的封装了下,封装函数如下:

1 private int clickCtrlById(String s, int t ){ 2 3 intctrl; 4 5 View v; 6 7 8 if( s == ""){ 9 10 return -1; 11 12 } 13 14 ctrl = solo.getCurrentActivity().getResources().getIdentifier(s,"id",TARGET_PACKAGE_ID); 15 16 17 18 v = solo.getView(ctrl); 19 20 solo.clickOnView(v); 21 22 solo.sleep(t); 23 24 return 0; 25 26 }
clickCtrlById("btn_dialpad_5",400);
转自:http://blog.sina.com.cn/s/blog_6abda9bc01015zoc.html

浙公网安备 33010602011771号