天天看點

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