天天看点

Android自动化测试之使用java调用monkeyrunner

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

         折腾了一番,我就感觉不应该是这样的,不过搜索了很多零碎的资料,差不多都是跟这个方法一个意思。最后,我在一个论坛找到了一个勉强称之为解决方法的答案。他重新给了我四个包,说是我导入的这四个包版本太新了(我的更新到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语言调用monkeyrunner来写脚本,我因为习惯了用python写,暂时没体会到有啥太大的优势,也许是工程量大时,用java更直接和便于管理,也许就是个人爱好了。这个有待以后体验。

       这里遗留了一个问题,就是用高版本的那四个包时,怎么进行调用monkeyrunner,我现在还没找到方案,有知道的大师,请不吝赐教,感激不尽。

本文转自 风泊海上 51CTO博客,原文链接:http://blog.51cto.com/fengbohaishang/1065647