MonkeyRunner_Android自動化測試之使用java調用monkeyrunner

來源:互聯網
上載者:User

眾所周知,一般情況下我們使用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。如:          
         匯入之後,我簡單建立了一個測試類別,然後添加一個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
)。結果這就像一個無底洞了,總是找不到最終一個檔案的父類:                                
         折騰了一番,我就感覺不應該是這樣的,不過搜尋了很多零碎的資料,差不多都是跟這個方法一個意思。最後,我在一個論壇找到了一個勉強稱之為解決方案的答案。他重新給了我四個包,說是我匯入的這四個包版本太新了(我的更新到android4.1)。我添加進去之後,果然能用。       這裡簡單貼一下My Code,說一下調用問題:
 
  1. import java.util.ArrayList;  
  2. import java.util.Collection;  
  3. import java.util.HashMap;  
  4. import com.android.monkeyrunner.adb.AdbBackend;  
  5. import com.android.monkeyrunner.core.IMonkeyDevice;  
  6. import com.android.monkeyrunner.core.TouchPressType;  
  7.    
  8. public class MyTest2 {  
  9.    
  10.      private static IMonkeyDevice device;     
  11.      private static AdbBackend adb;     
  12.    
  13.     public static void main(String[] args) {  
  14.        // TODO Auto-generated method stub  
  15.         if (adb==null){   
  16.              adb = new AdbBackend();   
  17. //      參數分別為自己定義的等待連線時間和裝置id  
  18.              device = adb.waitForConnection(8000,"MSM8225QRD5");  
  19.          }   
  20.         //添加啟動許可權  
  21.            String action = "android.intent.action.MAIN";     
  22.             Collection<String> categories = new ArrayList<String>();     
  23.             categories.add("android.intent.category.LAUNCHER");  
  24.     //             啟動要測試的主介面,主要是配置自己的包和啟動類  
  25.             device.startActivity(null, action, null, null, categories,     
  26.             new HashMap<String, Object>(),"cn.com.fetion/.android.ui.activities.StartActivity", 0);   
  27.      //           點擊某一個座標  
  28.             device.touch(202,258,TouchPressType.DOWN_AND_UP);  
  29.           
  30.     }  
  31. }  
       這些代碼還是比較簡單,主要注意的是兩點:1). adb.waitForConnection(a,b);這個方法裡添加的是等待啟動的時間和自己的裝置名稱字。2).startActivity()這個方法的倒數第二個參數是配置你的要測試的apk的包名和主介面,        運行java application就可以連上你的測試裝置。其他的一些需要用到的測試方法,比如monkeyrunner中的touch,drag,type,等等,都是monkeyrunner中的方法,你也可以簡單的封裝一下就可以使用。跟使用python時,沒多少區別。一些相關的用法可以參考這篇博文:http://fengbohaishang.blog.51cto.com/5106297/962705。       說到為什麼要使用java語言調用monkeyrunner來寫指令碼,我因為習慣了用python寫,暫時沒體會到有啥太大的優勢,也許是工程量大時,用java更直接和便於管理,也許就是個人愛好了。這個有待以後體驗。       這裡遺留了一個問題,就是用高版本的那四個包時,怎麼進行調用monkeyrunner,我現在還沒找到方案,有知道的大師,請不吝賜教,感激不盡。

本文出自 “風泊海上” 部落格,請務必保留此出處http://fengbohaishang.blog.51cto.com/5106297/1065647

說明:本文章僅用於學習參考。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.