幾款A(yù)ndroid應(yīng)用自動(dòng)化測(cè)試工具簡(jiǎn)述本文介紹幾款流行的Android_第1頁(yè)
幾款A(yù)ndroid應(yīng)用自動(dòng)化測(cè)試工具簡(jiǎn)述本文介紹幾款流行的Android_第2頁(yè)
幾款A(yù)ndroid應(yīng)用自動(dòng)化測(cè)試工具簡(jiǎn)述本文介紹幾款流行的Android_第3頁(yè)
幾款A(yù)ndroid應(yīng)用自動(dòng)化測(cè)試工具簡(jiǎn)述本文介紹幾款流行的Android_第4頁(yè)
幾款A(yù)ndroid應(yīng)用自動(dòng)化測(cè)試工具簡(jiǎn)述本文介紹幾款流行的Android_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、幾款 Android應(yīng)用自動(dòng)化測(cè)試工具簡(jiǎn)述:本文介紹幾款流行的Android應(yīng)用自動(dòng)化測(cè)試工具。Monkey測(cè)試:隨機(jī)測(cè)試,壓力測(cè)試,運(yùn)行在模擬器或?qū)嶋H設(shè)備中。MonkeyRunner測(cè)試:操作簡(jiǎn)單,可錄制測(cè)試腳本,可視化操作,主要生成坐標(biāo)的自動(dòng)化操作,移植性不強(qiáng)Robotium 測(cè)試Ronaorex 測(cè)試Appium 測(cè)試UI Automator測(cè)試TestBird測(cè)試1、Monkey 測(cè)試Monkey 即猴子, Monkey 測(cè)試,就像一只猴子,在電腦面前,亂敲鍵盤在測(cè)試。Monkey 測(cè)試主要用于 Android 應(yīng)用程序壓力測(cè)試的小工具, 主要目的就是為了測(cè)試 app 是否會(huì)Crash

2、。Monkey 測(cè)試原理: Monkey 是 Android中的一個(gè)命令行工具,可以運(yùn)行在模擬器里或?qū)嶋H設(shè)備中。它向系統(tǒng)發(fā)送偽隨機(jī)的用戶事件流( 如按鍵輸入、觸摸屏輸入、手勢(shì)輸入等) ,實(shí)現(xiàn)對(duì)正在開發(fā)的應(yīng)用程序進(jìn)行壓力測(cè)試。通常也稱隨機(jī)測(cè)試或者穩(wěn)定性測(cè)試。Monkey 測(cè)試是一種為了測(cè)試軟件的穩(wěn)定性、健壯性的快速有效的方法。1 Monkey特征測(cè)試的對(duì)象僅為應(yīng)用程序包,有一定的局限性。Monky 測(cè)試使用的事件流數(shù)據(jù)流是隨機(jī)的,不能進(jìn)行自定義。可對(duì) MonkeyTest 的對(duì)象,事件數(shù)量,類型,頻率等進(jìn)行設(shè)置。D.Monkey 雖可根據(jù)一個(gè)指定的命令腳本發(fā)送按鍵消息,但其不支持條件判斷,也不支

3、持讀取待測(cè)界面的信息來(lái)執(zhí)行驗(yàn)證操作。E.Monkey 運(yùn)行在設(shè)備或模擬器上面, 可以脫離 PC運(yùn)行,驗(yàn)證待測(cè)應(yīng)用在這些隨機(jī)性輸入面前是否會(huì)閃退或者崩潰。2 Monkey程序介紹 Monkey 程序由 Android系統(tǒng)自帶,使用 Java 語(yǔ)言寫成,在 Android 文件系統(tǒng)中的存放路徑是: /system/framework/monkey.jar; Monkey.jar 程序是由一個(gè)名為 “ monkey ”的 Shell 腳本來(lái)啟動(dòng)執(zhí)行, shell 腳本在 Android 文件系統(tǒng)中 的存放路徑是: /system/bin/monkey ; Monkey 命令啟動(dòng)方式:a.可以通過(guò) P

4、C 機(jī) CMD 窗口中執(zhí)行 : adb shell monkey+命令參數(shù)來(lái)進(jìn)行Monkey測(cè)試b.在 PC上 adb shell進(jìn)入 Android 系統(tǒng),通過(guò)執(zhí)行monkey + 命令參數(shù) 來(lái)進(jìn)行 Monkey 測(cè)試c.在 Android 機(jī)或者模擬器上直接執(zhí)行monkey命令,可以在 Android 機(jī)上安裝 Android 終端模擬器 對(duì)特定 APP包進(jìn)行測(cè)試的命令為adb shell monkey -p 3實(shí)例 測(cè)試前提條件將手機(jī)恢復(fù)出廠設(shè)置恢復(fù)出廠設(shè)置后,進(jìn)入設(shè)置 - 關(guān)于手機(jī) - 高級(jí)設(shè)置 - 勾選保持喚醒狀態(tài)c.在設(shè)置 - 安全中設(shè)置解鎖圖案以及PIN 碼d.連接 adb to

5、ole.手機(jī)開啟后臺(tái)log(*#*#3646633#*#*),開啟 main log,, mobile log和 net log 測(cè)試步驟使用 USB線連接手機(jī)和電腦在電腦中輸入 Monkey命令:adb shell monkey -p -throttle 380 -v -s3500 300000 C:monkey_log.txt在 Monkey 結(jié)束以后查看它停留的界面并且做一些簡(jiǎn)單的測(cè)試,如撥打電話,發(fā)送信息等 測(cè)試結(jié)果Monkey的測(cè)試結(jié)果可以通過(guò)monkey_log.txt查看,如果測(cè)試結(jié)果正常,在log 最后一行會(huì)有monkey finished顯示并且手機(jī)運(yùn)行正常。如果應(yīng)用程序產(chǎn)生

6、了應(yīng)用程序不響應(yīng)ANR(applicationnotresponding)的錯(cuò)誤, Monkey將會(huì)停止并報(bào)錯(cuò),如果應(yīng)用程序崩潰Crash 或接收到任何失控異常,Monkey也會(huì)停止并報(bào)錯(cuò)。a.在運(yùn)行Monkey命令時(shí),遇到Crash或者ANR,就會(huì)自動(dòng)終止。程序無(wú)響應(yīng)的問(wèn)題: 在日志中搜索“ANR”b. 崩潰問(wèn)題:在日志中搜索“Exception”(如果出現(xiàn)空指針,NullPointerException)肯定是有 bug例如在 log 最后一行顯示crashed at event #of 300000 using seed 3500。c. 最后搜索“ error ”一般我們執(zhí)行Monkey

7、時(shí),在 3 萬(wàn)次以內(nèi)發(fā)生Crash 的話就認(rèn)為 Monkey是有問(wèn)題的, 要提交 PR。 提交 Monkey 的 PR在執(zhí)行 Monkey命令時(shí)發(fā)生Crash 或者 ANR時(shí)需要提交 PR,具體提交 MonkeyPR的規(guī)則如下:a.標(biāo)題:在 PR標(biāo)題中加上 Monkey內(nèi)容:主要要包含自己執(zhí)行的命令以及在多少次發(fā)生crashb.內(nèi)容:主要要包含自己執(zhí)行的命令以及在多少次發(fā)生crashc . 其它:在 PR上要附上相關(guān)的 Monkey log 還有手機(jī)后臺(tái)開啟的 log ,如果有相關(guān)的強(qiáng)制關(guān)閉的圖片也可以貼上。4 Monkey參數(shù)Monkey命令: adb shell monkey -p -th

8、rottle 380 -v -s 3500300000 C:monkey_log.txt,這個(gè) monkey命令,當(dāng) monkey test過(guò)程中遇到 Crash 或者 ANR,就會(huì)自動(dòng)終止。C:monkey_log.txt指將 Monkey 的 log 存在 PC端的 C盤根目錄下。常規(guī)類參數(shù)1、 -help作用:列出簡(jiǎn)單的用法例: adb shell monkey -help也可不寫 help2、-v作用:命令行上的每一個(gè)-v 都將增加反饋信息的詳細(xì)級(jí)別。Level0 (默認(rèn)),除了啟動(dòng)、測(cè)試完成和最終結(jié)果外只提供較少的信息。Level1 ,提供了較為詳細(xì)的測(cè)試信息,如逐個(gè)發(fā)送到Activ

9、ity的事件信息。Level2 ,提供了更多的設(shè)置信息,如測(cè)試中選中或未選中的Activity信息。比較常用的是 -v -v -v ,即最多詳細(xì)信息,一般會(huì)保存到指定文件中供開發(fā)人員查找bug 原因時(shí)使用。例: adb shell monkey -v 10事件類參數(shù)1、-s 作用:偽隨機(jī)數(shù)生成器的 seed 值。如果用相同的 seed 值再次運(yùn)行 monkey,將生成相同的事件序列。例:2、-throttle 作用:在事件之間插入固定的時(shí)間(毫秒)延遲,你可以使用這個(gè)設(shè)置來(lái)減緩度,如果你不指定這個(gè)參數(shù),則事件之間將沒(méi)有延遲,事件將以最快的速度生成。Monkey 的運(yùn)行速注:常用參數(shù),一般設(shè)置為

10、300 毫秒,原因是實(shí)際用戶操作的最快300 毫秒左右一個(gè)動(dòng)作事件,所以此處一般設(shè)置為300 毫秒。例: adb shell monkey -throttle 300 -v 103、-pct-touch 作用:調(diào)整觸摸事件的百分比。 (觸摸事件是指在屏幕中的一個(gè)下并抬起的操作)down-up 事件,即在屏幕某處按注:常用參數(shù),此參數(shù)設(shè)置要適應(yīng)當(dāng)前被測(cè)應(yīng)用程序的操作,比如一個(gè)應(yīng)用80%的操作都是觸摸,那就可以將此參數(shù)的百分比設(shè)置成相應(yīng)較高的百分比。例: adb shell monkey -pct-touch 100 -v 104、-pct-motion 作用:調(diào)整motion 事件百分比。(mo

11、tion事件是由屏幕上某處一個(gè)down事件、一系列偽隨機(jī)的移動(dòng)事件和一個(gè)up 事件組成)注:常用參數(shù),需注意的是移動(dòng)事件是直線滑動(dòng)例: adb shell monkey -pct-motion 100 -v 105、-pct-trackball作用:調(diào)整滾動(dòng)球事件百分比。 (滾動(dòng)球事件由一個(gè)或多個(gè)隨機(jī)的移動(dòng)事件組成, 有時(shí)會(huì)伴隨著點(diǎn)擊事件)注:不常使用參數(shù), 現(xiàn)在手機(jī)幾乎沒(méi)有滾動(dòng)球, 但滾動(dòng)球事件中包含曲線滑動(dòng)事件, 在被測(cè)程序需要曲線滑動(dòng)時(shí)可以選用此參數(shù)。例: adb shell monkey -pct-trackball 100 -v 106、-pct-nav作用:調(diào)整基本的導(dǎo)航事件百分比

12、。(導(dǎo)航事件由方向輸入設(shè)備的上下左右按鍵所觸發(fā)的事件組成)注:不常用操作。例: adb shell monkey -pct-nav 100 -v 107、-pct-majornav作用:調(diào)整主要導(dǎo)航事件的百分比。 (這些導(dǎo)航事件通常會(huì)導(dǎo)致 UI 界面中的動(dòng)作事件, 如 5-way 鍵盤的中間鍵,回退按鍵、菜單按鍵)注:不常用操作。例: adb shell monkey -pct-majornav 100 -v 108、-pct-syskeys作用:調(diào)整系統(tǒng)事件百分比。(這些按鍵通常由系統(tǒng)保留使用,如Home、Back、 Start Call、EndCall 、音量調(diào)節(jié))注:不常用。例: adb

13、 shell monkey -pct-syskeys 100 -v 109、-pct-appswitch作用:調(diào)整 Activity啟動(dòng)的百分比。(在隨機(jī)的時(shí)間間隔中, Monkey將執(zhí)行一個(gè)startActivity()調(diào)用,作為最大程度覆蓋被測(cè)包中全部Activity的一種方法)注:不常用。例: adb shell monkey -pct-appswitch 100 -v 510、 -pct-anyevent作用:調(diào)整其他事件的百分比。 (這包含所有其他事件,如按鍵、其他在設(shè)備上不常用的按鈕等)注:不常用。例: adb shell monkey -pct-anyevent 100 -v 5

14、約束類參數(shù)1、-p作用:如果你指定一個(gè)或多個(gè)包, Monkey將只允許訪問(wèn)這些包中的 Activity 。如果你的應(yīng)用程序需要訪問(wèn)這些包 ( 如選擇聯(lián)系人 ) 以外的 Activity ,你需要指定這些包。 如果你不指定任何包, Monkey 將允許系統(tǒng)啟動(dòng)所有包的 Activity 。指定多個(gè)包,使用多個(gè) -p ,一個(gè) -p 后面接一個(gè)包名。注:常用參數(shù)。例:2、-c作用:如果你指定一個(gè)或多個(gè)類別, Monkey將只允許系統(tǒng)啟動(dòng)這些指定類別中列出的 Activity 。如果你不指定任何類別, Monkey將選擇謝列類別中列出的 Activity ,Intent.CATEGORY_LAUNCH

15、ER和Intent.CATEGORY_MONKEY。指定多個(gè)類別使用多個(gè)-c ,每個(gè) -c 指定一個(gè)類別。注:不常用。3、-dbg-no-events作用:設(shè)置此選項(xiàng), Monkey將執(zhí)行初始啟動(dòng),進(jìn)入一個(gè)測(cè)試 Activity 件。為了得到最佳結(jié)果,結(jié)合參數(shù) -v ,一個(gè)或多個(gè)包的約束,以及一個(gè)保持時(shí)間的非零值,從而提供了一個(gè)可以監(jiān)視應(yīng)用程序所調(diào)用的包之間轉(zhuǎn)換的環(huán)境。,并不會(huì)在進(jìn)一步生成事 Monkey 運(yùn)行 30 秒或更長(zhǎng)注:不常用。4、-hprof作用:設(shè)置此選項(xiàng), 將在 Monkey生成事件序列前后生成profilling報(bào)告。在data/misc路徑下生成大文件( 5Mb),所以要小

16、心使用。注:不常用。5、-ignore-crashes作用:通常,應(yīng)用發(fā)生崩潰或異常時(shí) Monkey 會(huì)停止運(yùn)行。如果設(shè)置此項(xiàng), Monkey將繼續(xù)發(fā)送事件給系統(tǒng),直到事件計(jì)數(shù)完成。注:常用。6、-ignore-timeouts作用:通常,應(yīng)用程序發(fā)生任何超時(shí)錯(cuò)誤(如“ Application Not responding ”對(duì)話框) Monkey 將停止運(yùn)行,設(shè)置此項(xiàng), Monkey將繼續(xù)發(fā)送事件給系統(tǒng),直到事件計(jì)數(shù)完成。注:常用。7、-ignore-security-exception作用:通常,當(dāng)程序發(fā)生許可錯(cuò)誤 (例如啟動(dòng)一些需要許可的 Activity )導(dǎo)致的異常時(shí), Monkey

17、 將停止運(yùn)行。設(shè)置此項(xiàng), Monkey將繼續(xù)發(fā)送事件給系統(tǒng),直到事件計(jì)數(shù)完成。注:常用。8、-kill-process-after-error作用:通常,當(dāng) Monkey 由于一個(gè)錯(cuò)誤而停止時(shí),出錯(cuò)的應(yīng)用程序?qū)⒗^續(xù)處于運(yùn)行狀態(tài)。設(shè)置此項(xiàng),將會(huì)通知系統(tǒng)停止發(fā)生錯(cuò)誤的進(jìn)程。注意,正常(成功)的結(jié)束,并沒(méi)有停止啟動(dòng)的進(jìn)程,設(shè)備只是在結(jié)束事件之后簡(jiǎn)單的保持在最后的狀態(tài)。9、-monitor-native-crashes作用:監(jiān)視并報(bào)告 Andorid 系統(tǒng)中本地代碼的崩潰事件。 如果設(shè)置 -kill-process-after-error,系統(tǒng)將停止運(yùn)行。10、 -wait-dbg作用:停止執(zhí)行中的M

18、onkey,直到有調(diào)試器和它相連接。樣例:-v -v -v -s 3500 300000 E:Testmonkey_log.txt測(cè)試結(jié)果:測(cè)試完成后均正確時(shí)會(huì)顯示Monkey finished:Events injected: 300:Sending rotation degree=0, persist=false:Dropped: keys=0 pointers=2 trackballs=0 flips=0rotations=0Network stats: elapsed time =42700ms (0ms mobile, 0ms wifi, 42700ms not connected)

19、/ Monkey finished有 bug 時(shí), 會(huì)出現(xiàn) error :Monkey aborted due to error. Events injected: 8530:Sending rotation degree=0, persist=false :Dropped: keys=5 pointers=8 trackballs=0 flips=0 rotations=0# Network stats: elapsed time =1016690ms (0ms mobile, 0ms wifi, 1016690ms notconnected)2、 MonkeyRunner 測(cè)試Monkey

20、Runner工具是使用 Jython ( 使用 Java 編程語(yǔ)言實(shí)現(xiàn)的 Python) 寫出來(lái)的,它提供了多個(gè)API,通過(guò) MonkeyRunner API 可以寫一個(gè) Python 的程序來(lái)模擬操作控制 Android 設(shè)備 app,測(cè)試其穩(wěn)定性并通過(guò)截屏可以方便地記錄出現(xiàn)的問(wèn)題。MonkeyRunner和 Monkey沒(méi)有直接的關(guān)系。 Monkey是在設(shè)備 / 模擬器直接運(yùn)行 adb shell 命令生成用戶或系統(tǒng)偽隨機(jī)事件流來(lái)進(jìn)行測(cè)試的。而 MonkeyRunner則運(yùn)行在 PC上,需要通過(guò)服務(wù)器 / 客戶端的的模式向設(shè)備或者模擬器上的 android 應(yīng)用發(fā)送指令來(lái)執(zhí)行測(cè)試。它支持自

21、己編寫插件 , 控制事件 , 隨時(shí)截圖 , 簡(jiǎn)而言之 , 任何你在模擬器 / 設(shè)備中能干的事情 ,MonkeyRunner 都能干 , 而且還可以記錄和回放。1 MonkeyRunner特征1)MonkeyRunner 工具在工作站上通過(guò)API 定義的特定命令和事件控制設(shè)備或模擬器(可控)2)精確控制事件之間的事件3)可以進(jìn)行:點(diǎn)觸屏、拖拽、長(zhǎng)按、鍵盤事件4)可以智能截圖對(duì)比和判斷5)回溯出詳細(xì)具體的BUG路徑2 MonkeyRunner優(yōu)缺點(diǎn)1) 能完全模擬人工所有操作2) 有詳細(xì)的 API 文檔參考3) 可以寫出智能圖像對(duì)比腳本4) 支持 java和 Python兩種語(yǔ)言腳本5) 腳本移植

22、性差3 MonkeyRunner測(cè)試類型1)多設(shè)備控制MonkeyRunnerAPI 可以跨多個(gè)設(shè)備或模擬器實(shí)施測(cè)試套件。您可以在同一時(shí)間接上所有的設(shè)備或一次啟動(dòng)全部模擬器(或統(tǒng)統(tǒng)一起),依據(jù)程序依次連接到每一個(gè),然后運(yùn)行一個(gè)或多個(gè)測(cè)試。您也可以用程序啟動(dòng)一個(gè)配置好的模擬器,運(yùn)行一個(gè)或多個(gè)測(cè)試,然后關(guān)閉模擬器。2)功能測(cè)試MonkeyRunner可以為一個(gè)應(yīng)用自動(dòng)貫徹一次功能測(cè)試。您提供按鍵或觸摸事件的輸入數(shù)值,然后觀察輸出結(jié)果的截屏。3)回歸測(cè)試MonkeyRunner可以運(yùn)行某個(gè)應(yīng)用,并將其結(jié)果截屏與既定已知正確的結(jié)果截屏相比較,以此測(cè)試應(yīng)用的穩(wěn)定性。4)可擴(kuò)展的自動(dòng)化由于 MonkeyR

23、unner是一個(gè) API 工具包,您可以基于Python 模塊和程序開發(fā)一整套系統(tǒng),以此來(lái)控制 Android 設(shè)備。除了使用 MonkeyRunner API 之外,您還可以使用標(biāo)準(zhǔn)的Python os 和 subprocess模塊來(lái)調(diào)用 Android Debug Bridge這樣的 Android 工具。4 MonkeyRunner 工具M(jìn)onkeyRunner API 主要包括三個(gè)模塊1)MonkeyRunner:此類提供連接真機(jī)和模擬器方法waitForConnection (float timeout,stringdeviceid),還提供了創(chuàng)建用戶界面顯示信息的alert()方法

24、。2)MonkeyDevice代表一個(gè)設(shè)備或模擬器。此類提供了安裝和卸載程序包、開啟 Activity 、發(fā)送按鍵和點(diǎn)擊事件、運(yùn)行測(cè)試包等方法拖拉控件 drag(tuple start,tuple end, floatduration,integer steps) /duration手勢(shì)持續(xù)時(shí)間按鍵 press(string keycode, dictionary type) /keycode: KEYCODE_HOME,.type:DOWN ,UP,DOWN_AND_UP.安裝應(yīng)用 installPackage(pc端存放 apk 路徑 )啟動(dòng)應(yīng)用 starActivity (package

25、+/+activity)/一個(gè)參數(shù)點(diǎn)擊 touch(integer x,integer y, integer type) /type:DOWN,UP,DOWN_AND_UP.輸入 type(string message)截屏 takeSnapshot()3)MonkeyImage這個(gè)類提供了捕捉屏幕的方法。在測(cè)試過(guò)程中用來(lái)保存測(cè)試截圖,將位圖保存為各種格式,并可以比較兩個(gè)MonkeyImage對(duì)象,將 image 保存到文件等。圖像對(duì)比 sameAs (MonkeyImage other,float percent)/對(duì)比的相似度,結(jié)果boolean 類型圖像保存 writetoFile (s

26、tring path,string format)5 MonkeyRunner環(huán)境搭建Monkeyrunner 的環(huán)境搭建,需要安裝以下工具:jdk 、 android sdk、python 編譯器。MonkeyRunner 環(huán)境搭建Eclipse中 MonkeyRunner環(huán)境搭建6 MonkeyRunner運(yùn)行運(yùn)行有兩種方式 在 CMD命令窗口直接運(yùn)行monkeyrunner 使用 Python 編寫測(cè)試代碼文件,在CMD中執(zhí)行 monkeyrunner xxx.py運(yùn)行不論使用哪種方式,您都需要調(diào)用SDK目錄的 tools子目錄下的monkeyrunner 命令。1)模擬器啟動(dòng)在運(yùn)行 m

27、onkeyrunner 之前必須先運(yùn)行相應(yīng)的模擬器或連接真機(jī),否則 monkeyrunner 無(wú)法連接到設(shè)備運(yùn)行模擬器有兩種方法:1、通過(guò) eclipse中執(zhí)行模擬器2 、在 CMD中通過(guò)命令調(diào)用模擬器這里介紹通過(guò)命令,在CMD中執(zhí)行模擬器的方法emulator -avd AVD_test上面命令中 AVD_test是指模擬器的名稱。2)交互對(duì)話環(huán)境cmd 運(yùn)行 monkeyrunner交互命令“ monkeyrunner ” 或:monkeyrunner -plugin3)cmd 終端導(dǎo)入 monkeyrunner 所要使用的模塊MonkeyDevice, MonkeyImage然后便可以開

28、始利用monkeyrunner 進(jìn)行測(cè)試了。3) 模擬器連接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)先,其次為模擬器)4) app安裝模擬器啟動(dòng)成功后,安裝apkdevice.installPackage (F:QQyinle_439.apk)其中,參數(shù)為apk 的相對(duì)路徑。成功返回true ,且模擬器的IDLE 界面可看到安裝apk 圖標(biāo)5)app 啟動(dòng)device.startActivity (c

29、omponent=package名/.activity)如何獲取一個(gè)app 的 package 名和 activity?使用#apk 路徑中一定不能有空格aapt dump badging F:QQyinle_439.apk或aapt dump badging F:QQyinle_439.apk F:log.txt所以:device.startActivity(component=命令執(zhí)行后,模擬器上的 app 被啟動(dòng)。啟動(dòng)成功后,便可以向模擬器發(fā)送如按鍵、滾動(dòng)、截圖、存儲(chǔ)等操作了6)問(wèn)題: CMD運(yùn)行提示 monkeyrunner 不是內(nèi)部或外部命令,也不是可運(yùn)行的程序或批處理文件。解決:電

30、腦環(huán)境變量未配置,將monkeyrunner 所在目錄配在環(huán)境變量里。變量名: Path變量值: D:androidandroid -sdk-windowstools; D:androidandroid-sdk-windowsplatform-tools7 樣例( Monkeyrunner 運(yùn)行 python 腳本)test.py#-*-UTF-8-*-#如果導(dǎo)入的模塊起了別名,后面就必須使用別名mrmdimportMonkeyImage as mi#連接設(shè)備或虛擬器。#參數(shù) 1,超時(shí)時(shí)間,單位秒,默認(rèn)無(wú)限期等待;參數(shù)2,設(shè)備名稱,默認(rèn)當(dāng)前設(shè)備#向設(shè)備或模擬器安裝apk, 以下兩種方式都是對(duì)的

31、device.installPackag e(D:baiduliulanqi_186.apk)#device.installPackage (D:/baiduliulanqi_186.apk)#啟動(dòng) APPmr.sleep(3)#點(diǎn)擊搜索框# 指定位置發(fā)送觸摸事件device.touch(100,100,DOWN_AND_UP)mr.sleep(1)#輸入查詢?cè)~device.type(test)mr.sleep(1)#點(diǎn)擊回車鍵# 發(fā)送指定類型鍵碼的事件device.press(KEYCODE_ENTER,DOWN_AND_UP)mr.sleep(2)#截圖result= device.tak

32、eSnapshot()#保存到文件result.writeToFile (./test.png,png)#清除搜索框device.touch (100,100, DOWN_AND_UP)mr.sleep(1)device.press (KEYCODE_DEL, DOWN_AND_UP)mr.sleep(2)#字符串發(fā)送到鍵盤#device.type(字符串 )device.type(Findyou)#喚醒設(shè)備屏幕#鎖屏后 , 屏幕關(guān)閉,可以用下命令喚醒device.wake()#重起手機(jī)device.reboot()#模擬滑動(dòng)#device.drag(X,Y,D,S)#X 開始坐標(biāo)#Y 結(jié)束坐

33、標(biāo)#D 拖動(dòng)持續(xù)時(shí)間 ( 以秒為單位 ) ,默認(rèn) 1.0 秒#S 插值點(diǎn)時(shí)要采取的步驟。默認(rèn)值是10device.drag(100,1053),(520,1053),0.1,10)運(yùn)行測(cè)試腳本test.py:monkeyrunner test.pymonkeyrunner 錄制和回放錄制: monkey_recorder.pymrMonkeyRecorder as recorderdevice=mr.waitForConnection()recorder.start(device)在 cmd 命令行運(yùn)行 monkeyrunner monkey_record.py, 會(huì)彈出一個(gè) MonkeyRe

34、cord窗口界面該窗口的功能:可以自動(dòng)顯示手機(jī)當(dāng)前的界面自動(dòng)刷新手機(jī)的最新?tīng)顟B(tài)點(diǎn)擊手機(jī)界面即可對(duì)手機(jī)進(jìn)行操作,同時(shí)會(huì)反應(yīng)到真機(jī),而且會(huì)在右側(cè)插入操作腳本wait : 用來(lái)插入下一次操作的時(shí)間間隔,點(diǎn)擊后即可設(shè)置時(shí)間,單位是秒Press a Button :用來(lái)確定需要點(diǎn)擊的按鈕,包括 menu、home、search ,以及對(duì)按鈕的 press 、down、up 屬性 Type Something :用來(lái)輸入內(nèi)容到輸入框Fling :用來(lái)進(jìn)行拖動(dòng)操作,可以向上、下、左、右,以及操作的范圍Export Actions:用來(lái)導(dǎo)出腳本,不需要后綴名,也可以添加后綴名.mrRefresh Displa

35、y:用來(lái)刷新手機(jī)界面,估計(jì)只有在斷開手機(jī)后,重新連接時(shí)才會(huì)用到用錄制函數(shù)導(dǎo)出操作的腳本,通過(guò)monkey_playback.py函數(shù)回放之前的操作回放: monkey_playback.py,import sysmrCMD_MAP = TOUCH:lambda dev,arg:dev.touch(*arg),DRAG: lambda dev,arg:dev.drag(*arg),TYPE: lambda dev,arg:dev.type(*arg),PRESS: lambda dev,arg:dev.press(*arg),WAIT: lambda dev,arg:mr.sleep(*arg)

36、def process_file(f,device):for line in f:(cmd,rest)=line.split(|)try:rest = eval(rest)except:print unable to parse optionscontinueif cmd not in CMD_MAP:print unknown command: + cmdcontinueCMD_MAPcmd(device, rest)def main():file = sys.argv1f = open(file,r)device = mr.waitForConnection()process_file(f

37、,device)f.close()if _name_ = _main_main()8其他#卸載設(shè)備或模擬器中的APK ,參數(shù)為 APK包名print (Uninstall Success!)#發(fā)送指定類型指定鍵碼的事件#device.press(參數(shù) 1: 鍵碼 , 參數(shù) 2: 觸摸事件類型 )#參數(shù) 1:見(jiàn)#參數(shù) 2,如有 TouchPressType() 返回的類型觸摸事件類型,有三種。#1、DOWN發(fā)送一個(gè) DOWN事件。指定 DOWN事件類型發(fā)送到設(shè)備,對(duì)應(yīng)的按一個(gè)鍵或觸摸屏幕上。#2、UP 發(fā)送一個(gè) UP事件。指定 UP事件類型發(fā)送到設(shè)備,對(duì)應(yīng)釋放一個(gè)鍵或從屏幕上抬起。#3、 DOW

38、N_AND_UP發(fā)送一個(gè) DOWN事件,然后一個(gè)UP事件。對(duì)應(yīng)于輸入鍵或點(diǎn)擊屏幕。以上三種事件做為press() 參數(shù)或 touch()參數(shù)#按下 HOME鍵device.press(KEYCODE_HOME ,MonkeyDevice.DOWN_AND_UP)#按下 BACK鍵device.press(KEYCODE_BACK,MonkeyDevice.DOWN_AND_UP)#按下下導(dǎo)航鍵device.press(KEYCODE_DPAD_DOWN,MonkeyDevice.DOWN_AND_UP)#按下上導(dǎo)航鍵device.press(KEYCODE_DPAD_UP,MonkeyDevi

39、ce.DOWN_AND_UP)#按下 OK鍵device.press(KEYCODE_DPAD_CENTER,MonkeyDevice.DOWN_AND_UP)KeyCode:home鍵 KEYCODE_HOMEback 鍵 KEYCODE_BACKsend 鍵 KEYCODE_CALLend 鍵 KEYCODE_ENDCALL上導(dǎo)航鍵 KEYCODE_DPAD_UP下導(dǎo)航鍵 KEYCODE_DPAD_DOWN左導(dǎo)航 KEYCODE_DPAD_LEFT右導(dǎo)航鍵 KEYCODE_DPAD_RIGHTok 鍵 KEYCODE_DPAD_CENTER上音量鍵 KEYCODE_VOLUME_UP下音量

40、鍵 KEYCODE_VOLUME_DOWNpower 鍵 KEYCODE_POWERcamera 鍵 KEYCODE_CAMERAmenu鍵 KEYCODE_MENU3、Robotium 測(cè)試Robotium 是一款常用的免費(fèi)的Android自動(dòng)化測(cè)試工具軟件, 適用于為不同的安卓版本和子版本黑盒測(cè)試自動(dòng)化。 Robotium 測(cè)試是用 java 寫的。提供了模擬各種手勢(shì)操作 (點(diǎn)擊、長(zhǎng)按、滑動(dòng)等)、查找和斷言機(jī)制的API,能夠?qū)Ω鞣N控件進(jìn)行操作。Robotium 對(duì) Activity,Dialog ,Toast ,Menu 都是支持的。軟件開發(fā)人員經(jīng)常把它描述為Android Selenium 。事實(shí)上, Robotium 是一個(gè)單元測(cè)試庫(kù)。為

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論