MonkeyRunner实践—用 java 来编写脚本

发表于:2015-11-04 10:16

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:suky2000    来源:51Testing软件测试网采编

  必要的了解
  不管是MonkeyRunner还是我自己胡写的MteMonkeyRunner说穿了主要就是调用下面的几个个关键的API:
  - ChimpChat
  - IChimpDevice
  - IChimpView
  - IChimpImage
  这几个类都来自于com.android.chimpchat.core package, 也就是chimpchat.jar. 这个类包中包含了很多基础的关键的Api, 比如 调用adb和HierarchyViewer等.
  MteMonkeyRunner基本结构
  就像前面提到的我只是把MonkeyRunner几个主要的类重写和拷贝了下, 在简单的进行了修改.只有四个主要的类文件.其实就是本人无耻的把对应方法中分析python参数的代码都删除掉了. 因为出发点为用java直接写代码, 所以并没有重新写个UI出来, 但是我分析过MonkeyRunner对应的界面代码, 真是挺对付的....
  举个栗子
package test.example.testcase;
import java.util.Collection;
import com.mte.android.mmr.MteMonkeyDevice;
import com.mte.android.mmr.MteMonkeyImage;
import com.mte.android.mmr.MteMonkeyRunner;
import com.mte.util.DateTimeUtil;
public class MteMonkeyRunnerTest {
public static void main(String args[]){
String apppath="./app/android/oschina/osc-android-app-2.2.apk";
String packageName="net.oschina.app";
String startActivity="net.oschina.app/.AppStart";
MteMonkeyDevice device=MteMonkeyRunner.waitForConnection(100000,"HC477WY00656");
System.out.println("Device name is : " + device.getProperty("build.model"));
for(String prop:device.getPropertyList()){
System.out.println(prop +" : "+device.getProperty(prop));
}
device.installPackage(apppath);
device.startActivity(startActivity);
MteMonkeyRunner.sleep(30000);
MteMonkeyImage image=new MteMonkeyImage(device.takeSnapshot());
image.writeToFile("./screen/MteMonkeyRunnerTest"+DateTimeUtil.getCurrentDateTime()+".png", "png");
MteMonkeyRunner.sleep(10000);
Collection<String> viewLst=device.getViewIdList();
System.out.println("device.getViewIdList() is : "+viewLst.size());
if(viewLst.size()>=1){
for(String prop:viewLst){
System.out.println(prop);
}
}
MteMonkeyRunner.sleep(20000);
device.removePackage(packageName);
device.dispose();
}
}
  可能出现的问题以及免责声明
  本人在写完基本方法测试脚本的时候, 有时候发现 当我使用device.shell()或者是device.getViewIdList()等方法时候,会抛出异常, 而且在真机通过了,反而在模拟器上出现问题, 虽然花时间找了下解释, 但是基本上算是没解决, 我在见了自己的MteMonkeyRunner的类的时候,只是删除了对应的python的参数处理,而且关键的方法基本没变, 怀疑是本人的Mac环境问题,所以本人也很无奈, 大家如果有兴趣在使用的时候,请注意并请见谅.写的这些本身就是为了学习研究, 通过一些很具体的实践加深了解, 分析源代码是非常有效的学习方式.
  参考
  本帖子中的MteMonkeyRunner 所有源代码都可以在 https://github.com/PandaSense/mtesense 中下载到,包名为com.mte.android.mmr, 可以单独使用, 只要你把,帖子前面说明的五个jar添加到对应project的java build path就可以.
  其他设想
  扩展下MonkeyRunner的UI界面多加一些有用的操作(自带的界面非常简陋)
  接受参数化的脚本,直接跑测试等等
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号