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

2016-02-19 11:31 73 1 收藏

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

【 tulaoshi.com - 编程语言 】

众所周知,一般情况下我们使用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。如下图:

(本文来源于图老师网站,更多请访问https://www.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)。结果这就像一个无底洞了,总是找不到最终一个文件的父类:如图:

(本文来源于图老师网站,更多请访问https://www.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更直接和便于管理,也许就是个人爱好了。这个有待以后体验。

来源:https://www.tulaoshi.com/n/20160219/1597742.html

延伸阅读
标签: 电脑入门
记得某个电影中有句经典台词二十一世纪什么最重要人才,在我们使用办公软件时什么最重要?那当然是素材了。WPS2012把素材库的功能更加自动化了。 单击插入选项卡 | 素材库或WPS程序右上角 素材库图标,就可以进入WPS素材库(图1)了。 图1 首先,个人收集的素材自动备份到快盘。而我们知道,快盘是什么自动把文档保存到云端,在任意一...
标签: autocad教程
关键字: AutoCAD 2009 Photoshop手绘 AutoCAD对象 中望CAD AutoCAD三维造型本文是探讨与设计验证相关的各种问题以及公司如何有效管理该过程,使其实现自动化,以避免成为推迟产品上市时间或对产品质量造成负面影响的瓶颈。 随着CAD 建模技术变得越来越先进,基于参数化特征的建模以及同步建模技术等突破性技术的应用变得更加广泛,...
标签: 生活常识
自动化设备的常用故障诊断方法 自动化设备故障检测的常用方法现在自动化设备在企业的普及率越来越高了,普及率高的同时设备故障率也就同步上升了,常用的简易状态监测方法主要有听诊法、触测法和观察法等。 1、听诊法 设备正常运转时,伴随发生的声响总是具有一定的音律和节奏。只要熟悉和掌握这些正常的音律和节奏,通过人...
在前文,我预告了我将开始介绍WINX对自动化(Automation)的支持。首先我打算解释一下自动化(Automation)相关的概念。 我们会分为3个篇幅介绍: ·COM基础:COM组件(Component)与接口(Interface) ·变体(Variant)与IDispatch(Dispatch调用) !-- frame contents -- !-- /frame contents -- ·自动化(Automation)、OA(Offi...
随着工程越来越复杂,项目越来越多,以及平台的迁移(我最近就迁了2回),还有各大市场的发布,自动化编译android项目的需求越来越强烈,后面如果考虑做持续集成的话,会更加强烈。     经过不断的尝试,在ubuntu环境下,以花界为例,我将一步一步演示如何使用命令行,使用ant编译android项目,打包多渠道APK。     要点: &nb...

经验教程

845

收藏

39
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部