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

爱明月0403

爱明月0403

2016-02-19 11:31

在这个颜值当道,屌丝闪边的时代,拼不过颜值拼内涵,只有知识丰富才能提升一个人的内在气质和修养,所谓人丑就要多学习,今天图老师给大家分享android monkey自动化测试改为java调用monkeyrunner Api,希望可以对大家能有小小的帮助。
众所周知,一般情况下我们使用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。如下图:

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)导入之后,我简单创建了一个测试类,然后添加一个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)。结果这就像一个无底洞了,总是找不到最终一个文件的父类:如图:

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)折腾了一番,我就感觉不应该是这样的,不过搜索了很多零碎的资料,差不多都是跟这个方法一个意思。最后,我在一个论坛找到了一个勉强称之为解决方法的答案。他重新给了我四个包,说是我导入的这四个包版本太新了(我的更新到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";
CollectionString categories = new ArrayListString();
categories.add("android.intent.category.LAUNCHER");
// 启动要测试的主界面,主要是配置自己的包和启动类
device.startActivity(null, action, null, null, categories,
new HashMapString, 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更直接和便于管理,也许就是个人爱好了。这个有待以后体验。
展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
android monkey自动化测试改为java调用monkeyrunner Api

Android 自动化测试经验分享 深入UiScrollable

编程语言 网络编程
Android 自动化测试经验分享 深入UiScrollable

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

利用LoadRunner进行http接口功能自动化测试

电脑网络
利用LoadRunner进行http接口功能自动化测试

2018 最好的自动化测试工具有哪些

电脑网络
2018 最好的自动化测试工具有哪些

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

XP自动化管理操作秘籍

电脑入门
XP自动化管理操作秘籍

办公自动化软件哪个好

电脑网络
办公自动化软件哪个好

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Linux系统中lftp用法汇总

Linux系统中lftp用法汇总

ajax实例入门代码

ajax实例入门代码
下拉加载更多内容 ↓