android monkey自动化测试改为java调用monkeyrunner Api

时间:2023-06-20 11:41:39 

众所周知,一般情况下我们使用android中的monkeyrunner进行自动化测试时,使用的是python语言来写测试脚本。不过,最近发现可以用java调用monkeyrunner Api,用java语言写测试脚本。

 

于是,就简单研究了一下。这里做一些总结。希望有对在研究的午饭可以有所用处。

开始时,搜素到一些零碎的教程,说使用java调用monkeyrunner时,需要导入android sdk  tools路径下的lib里面的4个包:ddmlib.jar,guavalib.jar,monkeyrunner.jar,sdklib.jar.当然,这里建的是java工程,往工程里面导包就是通过:右键工程》properties》Java Build Path》Libraries》add External JARs》OK。如下图:

android monkey自动化测试改为java调用monkeyrunner Api

导入之后,我简单创建了一个测试类,然后添加一个MonkeyDevice对象,然后引入需要的包,结果发现报了错误,引用的资源找不到,根据看到的例子的提示说,需要手动添加AdbBackend.java文件到自己的工程中去。于是,我就在搜了一下,在官网上下到了这个类(官网地址:http://www.java2s.com/Open-Source/Android/android-core/platform-sdk/com/android/monkeyrunner/adb/Catalogadb.htm)添加进去,之后,MonkeyDevice问题解决了,但是,下一个问题出现了,AdbBackend的父类文件找不到,就是MonkeyRunnerBackend.java,然后我只好去搜这个文件,然后手动添加到自己的工程中(地址是:http://www.java2s.com/Open-Source/Android/android-core/platform-sdk/com/android/monkeyrunner/MonkeyRunnerBackend.java.htm)。结果这就像一个无底洞了,总是找不到最终一个文件的父类:如图:

android monkey自动化测试改为java调用monkeyrunner Api

折腾了一番,我就感觉不应该是这样的,不过搜索了很多零碎的资料,差不多都是跟这个方法一个意思。最后,我在一个论坛找到了一个勉强称之为解决方法的答案。他重新给了我四个包,说是我导入的这四个包版本太新了(我的更新到android4.1)。我添加进去之后,果然能用。

这里简单贴一下我的代码,说一下调用问题:


import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import com.android.monkeyrunner.adb.AdbBackend;
import com.android.monkeyrunner.core.IMonkeyDevice;
import com.android.monkeyrunner.core.TouchPressType;
public class MyTest2 {
private static IMonkeyDevice device;
private static AdbBackend adb;
public static void main(String[] args) {
// TODO Auto-generated method stub
if (adb==null){
adb = new AdbBackend();
// 参数分别为自己定义的等待连接时间和设备id
device = adb.waitForConnection(8000,"MSM8225QRD5");
}
//添加启动权限
String action = "android.intent.action.MAIN";
Collection<String> categories = new ArrayList<String>();
categories.add("android.intent.category.LAUNCHER");
// 启动要测试的主界面,主要是配置自己的包和启动类
device.startActivity(null, action, null, null, categories,
new HashMap<String, Object>(),"cn.com.fetion/.android.ui.activities.StartActivity", 0);
// 点击某一个坐标
device.touch(202,258,TouchPressType.DOWN_AND_UP);

}
}

这些代码还是比较简单,主要注意的是两点:1).adb.waitForConnection(a,b);这个方法里添加的是等待启动的时间和自己的设备名字。2).startActivity()这个方法的倒数第二个参数是配置你的要测试的apk的包名和主界面,

 

运行java application就可以连上你的测试设备。其他的一些需要用到的测试方法,比如monkeyrunner中的touch,drag,type,等等,都是monkeyrunner中的方法,你也可以简单的封装一下就可以使用。跟使用python时,没多少区别。

 

说到为什么要使用java语言调用monkeyrunner来写脚本,我因为习惯了用python写,暂时没体会到有啥太大的优势,也许是工程量大时,用java更直接和便于管理,也许就是个人爱好了。这个有待以后体验。

标签:android,monkey测试
0
投稿

猜你喜欢

  • 详解Spring Cloud Gateway修改请求和响应body的内容

    2022-12-03 04:40:05
  • c++动态内存管理详解(new/delete)

    2022-07-09 11:53:26
  • SpringBoot如何集成PageHelper分页功能

    2022-10-22 03:18:34
  • SpringBoot整合腾讯云COS对象存储实现文件上传的示例代码

    2021-06-01 03:25:14
  • Android实现图片的裁剪(不调用系统功能)

    2021-05-25 23:26:41
  • Android实现自由拖动并显示文字的悬浮框

    2023-06-08 06:30:39
  • Spring boot事件监听实现过程解析

    2022-08-29 13:46:02
  • 修改Maven settings.xml 后配置未生效的解决

    2023-07-06 22:17:03
  • Android进度条ProgressBar的实现代码

    2023-01-30 07:12:22
  • lambda表达式解决java后台分组排序过程解析

    2023-11-29 06:03:39
  • springBoot 打war包 程序包com.sun.istack.internal不存在的问题及解决方案

    2023-03-28 06:12:40
  • C#中使用Microsoft Unity记录日志

    2023-05-09 10:37:26
  • Android RxJava创建操作符Interval

    2023-08-14 01:26:24
  • Android实现MVVM架构数据刷新详解流程

    2023-07-05 13:33:41
  • 简单实现Android本地音乐播放器

    2021-09-04 19:28:28
  • springboot web项目打jar或者war包并运行的实现

    2022-11-20 03:01:59
  • Java Spring @Lazy延迟注入源码案例详解

    2023-06-24 05:21:07
  • Java编程实现生成给定范围内不重复随机数的方法小结

    2022-03-21 22:45:13
  • Spring boot整合mybatis实现过程图解

    2023-01-15 09:31:05
  • Java对象在JVM中的生命周期详解

    2023-11-24 16:15:03
  • asp之家 软件编程 m.aspxhome.com