Robotium 专题(三): 编写 Case 时用到的几个有用的方法

来源:互联网 发布:python服务器端开发 编辑:程序博客网 时间:2024/06/05 22:49

本来今天想写下在有源代码的情况下,如何对应用进行自动化测试,但是今天活儿太多,就先不写了,可能很多同学都已经在网上搜到过相关的内容,包括在Robotium官方网站上也有看到过,所以,这里就简单说一下与APP控件相关的方法,便于利用控件ID进行操作。
1、通过控件ID点击打开VIEW,这个方法在具体的使用中,我自己用的较多,只要知道了控件的ID,就可以对控件进行操作,个人认为比较方便。如果有更好的方法,可以告诉我,一起学习下!

/* 通过ID点击打开VIEW * clickCtrlById(String s,int t) * s:Id(hierarchviewer)触摸按键的id,字符串格式 * t:timedelay 触发按键后,停留多久(ms) * TARGET_PACKAGE_ID,是一个宏变量,字符串格式,定义了目标APK的包名*/ public int clickCtrlById(String s, int t ) {     int ctrl;     View v;     if( s == "")     {         return -1;     }     ctrl = solo.getCurrentActivity().getResources().getIdentifier(s,"id","com.leju.platform");     v = solo.getView(ctrl);     solo.clickOnView(v);     solo.sleep(t);             return 0; }

2、知道了文本框ID后,可以通过下面的方法,直接在文本框中填写相应的数据,我认为这个方法比直接使用solo.entext(int index,String text)这种方式要好很多。

/* 通过ID输入文本内容 * enterTextById(String id,String s,int t) * id:Id(hierarchviewer)获取的文本框id,字符串格式id * s:需要输入的文本信息 * t:timedelay 触发按键后,停留多久(ms)*/public int enterTextById(String id,String s,int t) {     int ctrl;     EditText v;     if( s == "")     {         return -1;     }     ctrl=solo.getCurrentActivity().getResources().getIdentifier(id,"id",solo.getCurrentActivity().getPackageName());     v=(EditText)solo.getView(ctrl);     solo.enterText(v,s);     solo.sleep(t);     return 0; }

还有一些其他方法,等后面有时间再写上来。可能有些方法大家都已经用到过,我在这里写出来的原因主要是想把一些好的方法分享一下,顺便也记录一下,如果发现写的有问题,请大家一定要指正出来,我会认真修改的!
我个人认为,未来自动化还是有一定用处的,现在可能只是对robotium关注多一些,将来也会对其他的自动化工具做一些研究,也会写出来,我觉得做任何一种职业,态度是非常重要的,如果总是觉得测试没有地位,没有前途,那么转行做其他的就会有地位,有前途?地位和前途,都是靠自己的能力和努力来积累的,有些时候测试之所以没有地位,主要还是在于做测试的人,所以,对于咱们这些测试人员,一定要对自己有信心,无论开发多么牛逼,都需要测试去找出他们的问题,在开发和产品面前,该强势的时候一定要强势,不能总是因为觉得测试的地位不好,而忽略掉本该有的立场!



===================================================以下是回帖精华=========================================================

1、solo.getCurrentActivity().getResources().getIdentifier(s,"id","com.leju.platform")这个方法的意思主要是获取资源ID,getIdentifier(s,"id","com.leju.platform")中第一个参数是ID名,第二个参数是资源属性ID或者是Drawable,第三个参数是包名。


2、因为在robotium中api中不提供使用id的方式,如果我们想在robotium中使用id就需要自己通过id来找到控件的实例,然后通过robotium的api对实例进行操作来达到目的,当然也可以自己做封装,如我写的方法那样!这个问题你就不用再纠结了,你可以按你的方法试试,如果不行,再用我的方法!


3、在白盒测试(拿到项目代码的情况)中,我们可以直接使用R.id的形式来调用:View view=solo.getView(R.id.btn_Example);//获取View
solo.clickOnView(view);//点击;但是在只知道APP的情况下,R.id不可见,所以我只能把ctrl定义成int类型的,然后再使用 getView(int id) 的方法来得到想要的view!

0 0
原创粉丝点击