monkeyrunner環(huán)境搭建及實(shí)例教程(3)
Monkeyrunner工具提供了一個(gè)API,使用此API寫(xiě)出的程序可以在Android代碼之外控制Android設(shè)備和模擬器。
一、Monkeyrunner簡(jiǎn)介
1.MOnkeyrunner相對(duì)Monkey區(qū)別
1)Monkeyrunner工具在工作站上通過(guò)API定義的特定命令和事件控制設(shè)備或模擬器(可控)
2)精確控制事件之間的事件
3)可以進(jìn)行:點(diǎn)觸屏、拖拽、長(zhǎng)按、鍵盤(pán)事件
4)可以智能截圖對(duì)比和判斷
5)回溯出詳細(xì)具體的BUG路徑
2.Monkeyrunner優(yōu)缺點(diǎn)
1) 能完全模擬人工所有操作
2) 有詳細(xì)的API文檔參考
3) 可以寫(xiě)出智能圖像對(duì)比腳本
4) 支持java和Python兩種語(yǔ)言腳本
5) 腳本移植性差
3.Monkeyrunner腳本編寫(xiě)
1) 終端USB調(diào)成開(kāi)發(fā)者模式
2)電腦安裝手機(jī)驅(qū)動(dòng)
二、Monkeyrunner環(huán)境搭建
Monkeyrunner的環(huán)境搭建,需要安裝以下工具:jdk、android sdk、python編譯器。
1.jdk的安裝與配置
1)jdk下載地址
http://www.oracle.com/technetwork/java/javase/downloads/index.html
下載完成后,默認(rèn)安裝即可。
2)jdk環(huán)境配置
jdk安裝成功后,計(jì)算機(jī)→屬性→高級(jí)系統(tǒng)設(shè)置→高級(jí)→環(huán)境變量,在系統(tǒng)變量中,新建JAVA_HOME變量,變量值填寫(xiě)jdk的安裝目錄。
在系統(tǒng)變量中,編輯Path變量,在變量值最后輸入%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(注意原來(lái)Path的變量值末尾有沒(méi)有;號(hào),如果沒(méi)有,先輸入;號(hào)再輸入上面的代碼)
在系統(tǒng)變量中,新建CLASSPATH變量,變量值填寫(xiě)為:
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一點(diǎn))
到此,系統(tǒng)變量配置完畢。
3)jdk環(huán)境檢查
檢驗(yàn)jdk環(huán)境是否配置成功,則運(yùn)行cmd,在cmd窗口中,輸入 java -version (java 和 -version 之間有空格)。若如圖所示,顯示版本信息,則說(shuō)明安裝和配置成功。
2.android sdk安裝與配置
android sdk就是指Android專屬的軟件開(kāi)發(fā)工具包。android sdk中我們最常用的就是tools和platform-tools文件夾中的工具。
1)sdk下載地址
下載地址1:http://developer.android.com/sdk/index.html
下載地址2:http://rj.baidu.com/soft/detail/23485.html?ald
Sdk下載完成后,解壓縮到自己的目錄,不需要安裝。
2)sdk環(huán)境配置
sdk安裝成功后,計(jì)算機(jī)→屬性→高級(jí)系統(tǒng)設(shè)置→高級(jí)→環(huán)境變量,在系統(tǒng)變量中,新建ANDROID_HOME變量,變量值填寫(xiě)sdk中tools和platform-tools的安裝目錄。
在系統(tǒng)變量中,編輯Path變量,在變量值最后輸入%ANDROID_HOME%;
(注意原來(lái)Path的變量值末尾有沒(méi)有;號(hào),如果沒(méi)有,先輸入;號(hào)再輸入上面的代碼)
3)sdk環(huán)境檢查
檢驗(yàn)sdk環(huán)境是否配置成功,則運(yùn)行cmd,在cmd窗口中,輸入adb。若如圖所示,則說(shuō)明安裝和配置成功。
3.Python編輯器安裝與配置
python用于支持Monkeyrunner運(yùn)行,使用python腳本編寫(xiě)用例會(huì)大大簡(jiǎn)化Monkeyrunner用例的編寫(xiě),且會(huì)幫助擴(kuò)展monkeyrunner的自動(dòng)化功能。
1)Python下載地址
下載地址:http://www.python.org/download/
下載后,按照提示信息,下一步安裝即可。
2)Python環(huán)境配置
Python安裝成功后,計(jì)算機(jī)→屬性→高級(jí)系統(tǒng)設(shè)置→高級(jí)→環(huán)境變量,在系統(tǒng)變量中,編輯Path變量,在變量值最后輸入Python的安裝路徑;
(注意原來(lái)Path的變量值末尾有沒(méi)有;號(hào),如果沒(méi)有,先輸入;號(hào)再輸入上面的代碼)
3)Python環(huán)境檢查
檢驗(yàn)Python環(huán)境是否配置成功,則運(yùn)行cmd,在cmd窗口中,輸入python。若如圖所示,顯示版本信息,則說(shuō)明安裝和配置成功。
4.Monkeyrunner環(huán)境檢查
若以上步驟均完成,且各環(huán)境變量也配置正確,至此,Monkeyrunner環(huán)境已經(jīng)搭建完成。檢驗(yàn)Monkeyrunner環(huán)境是否搭建成功,則同樣運(yùn)行cmd,在cmd窗口中,輸入monkeyrunner。如下圖所示,則說(shuō)明Monkeyrunner環(huán)境搭建成功。
下面就可以用Monkeyrunner連接模擬器來(lái)進(jìn)行自動(dòng)化的測(cè)試了。
三、Monkeyrunner使用方法
Moneyrunner在使用前,必須先打開(kāi)模擬器或連接上手機(jī)設(shè)備。下面是Monkeyrunner的實(shí)例操作。
1.模擬器啟動(dòng)
我們這里選擇命令打開(kāi)模擬器。運(yùn)行cmd,在cmd窗口,輸入命令:emulator -avd AVD_test,其中AVD_test是模擬器的名稱,填寫(xiě)自己創(chuàng)建的模擬器名稱。
模擬器啟動(dòng)成功后,我們?nèi)栽赾md環(huán)境中操作?,F(xiàn)在進(jìn)入Monkeyrunner的shell命令交互模式。
輸入命令:monkeyrunner
進(jìn)入shell命令交互模式后,首要一件事就是導(dǎo)入monkeyrunner所要使用的模塊。直接在shell命令下輸入命令:
再回車(chē),這步完成我們就可以利用monkeyrunner進(jìn)行測(cè)試工作了。
2.模擬器連接
下面我們就要Monkeyrunner連接上模擬器,進(jìn)行一系列操作了。輸入命令:
device=MonkeyRunner.waitForConnection()
其中,device=MonkeyRunner.waitForConnection(6,'emulator-5554′)
參數(shù)1:超時(shí)時(shí)間,單位秒,浮點(diǎn)數(shù),默認(rèn)是無(wú)限期地等待。
參數(shù)2:指定的設(shè)備名稱device_id,默認(rèn)為當(dāng)前設(shè)備(手機(jī)優(yōu)先,其次為模擬器)
輸入命令后,頁(yè)面上沒(méi)有錯(cuò)誤信息返回,即成功連接設(shè)備。
3.app安裝并啟動(dòng)
1)app安裝
模擬器啟動(dòng)成功后,我們安裝自己想要的apk,這里我們選擇qq音樂(lè)安裝。
輸入命令:device.installPackage('F:\\QQyinle_439.apk'),其中,參數(shù)是APK的相對(duì)路徑。
安裝成功返回true,此時(shí)查看模擬器我們可以在IDLE界面上看到安裝的APK的圖標(biāo)了。
2)app啟動(dòng)
app安裝成功后,現(xiàn)在啟動(dòng)該app,命令為:
device.startActivity(component="package名/.activity")
首先,我們有必要說(shuō)一下,如何獲取一個(gè)app的package名和activity。這里,我們只描述一種獲取方式。
使用aapt,其中aapt是sdk自帶的一個(gè)工具,在sdk\builds-tools\目錄下:
以存儲(chǔ)在F盤(pán)的qq音樂(lè)為例,運(yùn)行cmd,命令行中切換到aapt.exe目錄,
方法一:
執(zhí)行命令:aapt dump badging F:\QQyinle_439.apk ,注意,apk路徑中一定不能有空格。
由上圖可知:package name:com.tencent.qqmusic
activity:.activity.AppStarterActivity
方法一由于日志較多,尋找起來(lái)比較費(fèi)勁,所以我們引出方法二。
方法二(推薦):
把日志存儲(chǔ)在特定的文件中,在文件中通過(guò)搜索關(guān)鍵字,得到包名及活動(dòng)名,這里我把結(jié)果輸出到F盤(pán)的log.txt中:
aapt dump badging F:\QQyinle_439.apk > F:\log.txt
到此,已經(jīng)獲取了app的package名和activity。下面,我們真正的啟動(dòng)app。在原有cmd運(yùn)行窗口,輸入命令:
命令執(zhí)行后,模擬器上的app被啟動(dòng)。這表示命令啟動(dòng)app成功。這里的關(guān)鍵是app的package name和activity對(duì)應(yīng)獲取正確,否則啟動(dòng)不了特定app。
此時(shí)可以向模擬器發(fā)送如按鍵、滾動(dòng)、截圖、存儲(chǔ)等操作了。
四、Monkeyrunner運(yùn)行python腳本
同樣,Monkeyrunner可以直接調(diào)用指定python腳本,將命令寫(xiě)到python文件里,命名例如***.py,然后我們?cè)購(gòu)拿钚兄苯油ㄟ^(guò)monkeyrunner運(yùn)行它即可。比如,我們還是用上面的例子,語(yǔ)法如下:monkeyrunner ***.py。接下來(lái)monkeyrunner會(huì)自動(dòng)調(diào)用***.py,并執(zhí)行其中的語(yǔ)句,相當(dāng)方便。
我們這里將上述例子,所有命令放在python文件里,并命名test.py,然后存儲(chǔ)到本地F盤(pán),即路徑為: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中運(yùn)行monkeyrunner F:\test.py,這里的python腳本路徑為相對(duì)路徑。結(jié)果報(bào)錯(cuò):SyntaxError:mismatched input 'test' expecting NEWLINE,如下:
這是因?yàn)閜ython腳本應(yīng)在dos模式下執(zhí)行,不要進(jìn)入monkeyrunner的shell命令交互模式。正確的方式如下,輸入命令monkeyrunner F:\test.py:
運(yùn)行成功后,則可以在模擬器上看到啟動(dòng)的qq音樂(lè)app。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- monkeyrunner 腳本錄制實(shí)例詳解
- Android Monkey壓力測(cè)試詳細(xì)介紹
- Android自動(dòng)測(cè)試工具M(jìn)onkey的實(shí)現(xiàn)方法
- 詳解Python編程中對(duì)Monkey Patch猴子補(bǔ)丁開(kāi)發(fā)方式的運(yùn)用
- Monkey Patch猴子補(bǔ)丁編程方式及其在Ruby中的運(yùn)用
- Ruby使用Monkey Patch猴子補(bǔ)丁方式進(jìn)行程序開(kāi)發(fā)的示例
- Android自動(dòng)測(cè)試工具M(jìn)onkey
- Android SDK命令行工具M(jìn)onkey參數(shù)及使用解析
相關(guān)文章
Android WebView實(shí)現(xiàn)截長(zhǎng)圖功能
這篇文章主要為大家詳細(xì)介紹了Android截長(zhǎng)圖的一種實(shí)現(xiàn)方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05Android實(shí)現(xiàn)手勢(shì)滑動(dòng)(左滑和右滑)
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)手勢(shì)滑動(dòng),左滑和右滑效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07Android編程實(shí)現(xiàn)監(jiān)控apk安裝,卸載,替換的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)監(jiān)控apk安裝,卸載,替換的方法,涉及Android基于Intent監(jiān)控apk狀態(tài)的功能實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-01-01Android開(kāi)發(fā)中聽(tīng)筒無(wú)法播放音樂(lè)的解決方法
這篇文章主要介紹了Android開(kāi)發(fā)中聽(tīng)筒無(wú)法播放音樂(lè)的解決方法,涉及Android權(quán)限控制中的相關(guān)屬性設(shè)置技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-10-10Android仿知乎懸浮功能按鈕FloatingActionButton效果
前段時(shí)間在看屬性動(dòng)畫(huà),恰巧這個(gè)按鈕的效果可以用屬性動(dòng)畫(huà)實(shí)現(xiàn),下面通過(guò)本文給大家分享adroid仿知乎懸浮功能按鈕FloatingActionButton效果,需要的朋友參考下吧2017-04-04Android Intent傳遞數(shù)據(jù)底層分析詳細(xì)介紹
這篇文章主要介紹了Android Intent傳遞數(shù)據(jù)底層分析詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2017-02-02Android擴(kuò)大View點(diǎn)擊范圍的方法
Android4.0設(shè)計(jì)規(guī)定的有效可觸摸的UI元素標(biāo)準(zhǔn)是48dp,轉(zhuǎn)化為一個(gè)物理尺寸約為9毫米。7~10毫米,這是一個(gè)用戶手指能準(zhǔn)確并且舒適觸摸的區(qū)域。本文將介紹Android擴(kuò)大View點(diǎn)擊范圍的方法2021-05-05創(chuàng)建子線程對(duì)Android進(jìn)行網(wǎng)絡(luò)訪問(wèn)
這篇文章介紹了Android中創(chuàng)建子線程進(jìn)行網(wǎng)絡(luò)訪問(wèn)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考2021-11-11