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!
- Robotium 专题(三): 编写 Case 时用到的几个有用的方法
- Robotium 专题(三): 编写 Case 时用到的几个有用的方法
- 用到的几个gdb case
- Robotium 专题(四): Robotium 中部分常用的方法集锦
- Robotium 专题(四): Robotium 中部分常用的方法集锦
- 几个有用的jQuery方法
- Robotium学习(三)-执行shell命令的方法
- 涉及网络编程时,需要用到的几个常用方法
- 涉及网络编程时,需要用到的几个常用方法
- 涉及网络编程时,需要用到的几个常用方法
- jquery经常用到的几个方法1
- 有用的数组函数(不常用到)
- linux下编写IGMP可能用到的几个结构体
- 编写测量矩阵代码需要用到的几个常见函数
- Robotium 专题(五):Robotium 升级到 5.1 后的一些改进
- Robotium 专题(五):Robotium 升级到 5.1 后的一些改进
- 几个非常有用的google优化方法
- java 关于 timeZone 的几个有用方法
- Oracle 10g RAC public IP 与 private IP 详解
- Java JDK 1.5之后专门的输入数据类Scanner类
- Redis操作的封装类
- JDK自带工具之jhat
- poj2553 The Bottom of a Graph (Tarjan)
- Robotium 专题(三): 编写 Case 时用到的几个有用的方法
- 世界将如此O2O(大势所趋)
- UVa 211 - The Domino Effect (DFS)
- JDK自带工具之jstack
- 【ACM打卡】ZOJ 3019
- debian sendmail安装
- 函数实现-memcpy-strcpy-memmove-memset
- Tomcat学习之Tomcat架构
- 解决adb not responding you can wait more