Monkeyrunner工具提供了一個API,使用此API寫出的程序能夠在Android代碼以外控制Android設備和模擬器。html
1)Monkeyrunner工具在工做站上經過API定義的特定命令和事件控制設備或模擬器(可控)java
2)精確控制事件之間的事件python
3)能夠進行:點觸屏、拖拽、長按、鍵盤事件android
4)能夠智能截圖對比和判斷shell
5)回溯出詳細具體的BUG路徑oracle
1) 能徹底模擬人工全部操做app
2) 有詳細的API文檔參考編輯器
3) 能夠寫出智能圖像對比腳本工具
4) 支持java和Python兩種語言腳本開發工具
5) 腳本移植性差
1) 終端USB調成開發者模式
2)電腦安裝手機驅動
Monkeyrunner的環境搭建,須要安裝如下工具:jdk、android sdk、python編譯器。
http://www.oracle.com/technetwork/java/javase/downloads/index.html
下載完成後,默認安裝便可。
jdk安裝成功後,計算機→屬性→高級系統設置→高級→環境變量,在系統變量中,新建JAVA_HOME變量,變量值填寫jdk的安裝目錄。
在系統變量中,編輯Path變量,在變量值最後輸入%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(注意原來Path的變量值末尾有沒有;號,若是沒有,先輸入;號再輸入上面的代碼)
在系統變量中,新建CLASSPATH變量,變量值填寫爲:
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一點)
到此,系統變量配置完畢。
檢驗jdk環境是否配置成功,則運行cmd,在cmd窗口中,輸入 java -version (java 和 -version 之間有空格)。若如圖所示,顯示版本信息,則說明安裝和配置成功。
android sdk就是指Android專屬的軟件開發工具包。android sdk中咱們最經常使用的就是tools和platform-tools文件夾中的工具。
下載地址1:http://developer.android.com/sdk/index.html
下載地址2:http://rj.baidu.com/soft/detail/23485.html?ald
Sdk下載完成後,解壓縮到本身的目錄,不須要安裝。
sdk安裝成功後,計算機→屬性→高級系統設置→高級→環境變量,在系統變量中,新建ANDROID_HOME變量,變量值填寫sdk中tools和platform-tools的安裝目錄。
在系統變量中,編輯Path變量,在變量值最後輸入%ANDROID_HOME%;
(注意原來Path的變量值末尾有沒有;號,若是沒有,先輸入;號再輸入上面的代碼)
檢驗sdk環境是否配置成功,則運行cmd,在cmd窗口中,輸入adb。若如圖所示,則說明安裝和配置成功。
python用於支持Monkeyrunner運行,使用python腳本編寫用例會大大簡化Monkeyrunner用例的編寫,且會幫助擴展monkeyrunner的自動化功能。
下載地址:http://www.python.org/download/
下載後,按照提示信息,下一步安裝便可。
Python安裝成功後,計算機→屬性→高級系統設置→高級→環境變量,在系統變量中,編輯Path變量,在變量值最後輸入Python的安裝路徑;
(注意原來Path的變量值末尾有沒有;號,若是沒有,先輸入;號再輸入上面的代碼)
檢驗Python環境是否配置成功,則運行cmd,在cmd窗口中,輸入python。若如圖所示,顯示版本信息,則說明安裝和配置成功。
若以上步驟均完成,且各環境變量也配置正確,至此,Monkeyrunner環境已經搭建完成。檢驗Monkeyrunner環境是否搭建成功,則一樣運行cmd,在cmd窗口中,輸入monkeyrunner。以下圖所示,則說明Monkeyrunner環境搭建成功。
下面就能夠用Monkeyrunner鏈接模擬器來進行自動化的測試了。
Moneyrunner在使用前,必須先打開模擬器或鏈接上手機設備。下面是Monkeyrunner的實例操做。
咱們這裏選擇命令打開模擬器。運行cmd,在cmd窗口,輸入命令:emulator -avd AVD_test,其中AVD_test是模擬器的名稱,填寫本身建立的模擬器名稱。
模擬器啓動成功後,咱們仍在cmd環境中操做。如今進入Monkeyrunner的shell命令交互模式。
輸入命令:monkeyrunner
進入shell命令交互模式後,首要一件事就是導入monkeyrunner所要使用的模塊。直接在shell命令下輸入命令:
from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice
再回車,這步完成咱們就能夠利用monkeyrunner進行測試工做了。
下面咱們就要Monkeyrunner鏈接上模擬器,進行一系列操做了。輸入命令:
device=MonkeyRunner.waitForConnection()
其中,device=MonkeyRunner.waitForConnection(6,’emulator-5554′)
參數1:超時時間,單位秒,浮點數,默認是無限期地等待。
參數2:指定的設備名稱device_id,默認爲當前設備(手機優先,其次爲模擬器)
輸入命令後,頁面上沒有錯誤信息返回,即成功鏈接設備。
模擬器啓動成功後,咱們安裝本身想要的apk,這裏咱們選擇qq音樂安裝。
輸入命令:device.installPackage('F:\\QQyinle_439.apk'),其中,參數是APK的相對路徑。
安裝成功返回true,此時查看模擬器咱們能夠在IDLE界面上看到安裝的APK的圖標了。
app安裝成功後,如今啓動該app,命令爲:
device.startActivity(component="package名/.activity")
首先,咱們有必要說一下,如何獲取一個app的package名和activity。這裏,咱們只描述一種獲取方式。
使用aapt,其中aapt是sdk自帶的一個工具,在sdk\builds-tools\目錄下:
以存儲在F盤的qq音樂爲例,運行cmd,命令行中切換到aapt.exe目錄,
方法一:
執行命令:aapt dump badging F:\QQyinle_439.apk ,注意,apk路徑中必定不能有空格。
由上圖可知:package name:com.tencent.qqmusic
activity:.activity.AppStarterActivity
方法一因爲日誌較多,尋找起來比較費勁,因此咱們引出方法二。
方法二(推薦):
把日誌存儲在特定的文件中,在文件中經過搜索關鍵字,獲得包名及活動名,這裏我把結果輸出到F盤的log.txt中:
aapt dump badging F:\QQyinle_439.apk > F:\log.txt
到此,已經獲取了app的package名和activity。下面,咱們真正的啓動app。在原有cmd運行窗口,輸入命令:
device.startActivity(component=" com.tencent.qqmusic/.activity.AppStarterActivity ")
命令執行後,模擬器上的app被啓動。這表示命令啓動app成功。這裏的關鍵是app的package name和activity對應獲取正確,不然啓動不了特定app。
此時能夠向模擬器發送如按鍵、滾動、截圖、存儲等操做了。
一樣,Monkeyrunner能夠直接調用指定python腳本,將命令寫到python文件裏,命名例如***.py,而後咱們再從命令行直接經過monkeyrunner運行它便可。好比,咱們仍是用上面的例子,語法以下:monkeyrunner ***.py。接下來monkeyrunner會自動調用***.py,並執行其中的語句,至關方便。
咱們這裏將上述例子,全部命令放在python文件裏,並命名test.py,而後存儲到本地F盤,即路徑爲:F:\test.py。
#coding:utf-8 from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice device=MonkeyRunner.waitForConnection() device.installPackage('F:\\QQ_374.apk') MonkeyRunner.sleep(3.0) runComponent = "com.tencent.qqmusic/.activity.AppStarterActivity" device.startActivity(component=runComponent)
在cmd中運行monkeyrunner F:\test.py,這裏的python腳本路徑爲相對路徑。結果報錯:SyntaxError:mismatched input 'test' expecting NEWLINE,以下:
這是由於python腳本應在dos模式下執行,不要進入monkeyrunner的shell命令交互模式。正確的方式以下,輸入命令monkeyrunner F:\test.py:
運行成功後,則能夠在模擬器上看到啓動的qq音樂app。