使用Adt自帶的工具進(jìn)行Android自動(dòng)化測(cè)試(二)

本文章轉(zhuǎn)載于搜狗測(cè)試

在這個(gè)系列的上一篇文章中,我們介紹了Monkey的用法,這篇文章將繼續(xù)介紹Adt自帶的另外一個(gè)自動(dòng)化工具M(jìn)onkeyRunner

MonkeyRunner和Monkey的關(guān)系

在這個(gè)系列的上一篇文章中,我們介紹了Monkey最常規(guī)的一種用法,即進(jìn)行完全隨機(jī)的測(cè)試(點(diǎn)擊文末“閱讀原文”可以打開(kāi)這篇文章查看)。在這種情況下,Monkey會(huì)自己產(chǎn)生一些隨機(jī)的操作指令給自己執(zhí)行。但是如果想要按照一個(gè)特定的指令序列執(zhí)行,就要借助MonkeyRunner。

MonkeyRunner是一個(gè)運(yùn)行于PC端的程序,它可以把預(yù)先定義好的操作指令一條一條發(fā)送給Monkey,從而控制Monkey進(jìn)行更加精確的自動(dòng)化操作。

其實(shí)MonkeyRunner和Monkey的這種關(guān)系從名字就能看出來(lái)一些端倪。

MonkeyRunner的使用方法

MonkeyRunner發(fā)送給Monkey的操作指令是按照特定的協(xié)議編寫的,這里我們不需要關(guān)心協(xié)議的具體內(nèi)容,只需要使用Python編寫自動(dòng)化腳本,調(diào)用MonkeyRunner預(yù)先定義好的函數(shù)。需要說(shuō)明的是,MonkeyRunner雖然使用到Python,但實(shí)際上并不需要安裝Python的運(yùn)行環(huán)境,就像前面提到的,使用這個(gè)系列介紹的工具進(jìn)行Android自動(dòng)化測(cè)試都不需要安裝其它額外的工具。

在使用MonkeyRunner時(shí),首先需要開(kāi)啟模擬器,或者通過(guò)USB連接真實(shí)的Android設(shè)備。

MonkeyRunner的可執(zhí)行文件放在sdk的tools目錄下,是一個(gè)命令行的工具。

你可以在任意位置用Python編寫好腳本,再用MonkeyRunner來(lái)執(zhí)行。而且這些腳本只能通過(guò)MonkeyRunner執(zhí)行,不能像其它py文件一樣直接通過(guò)Python執(zhí)行。

比如在命令行輸入:

D:\Adt\sdk\tools\monkeyrunner D:\sogouqa.py

下面這個(gè)腳本調(diào)起搜狗手機(jī)瀏覽器,打開(kāi)菜單并截圖,這個(gè)腳本示例可以用來(lái)檢查搜狗手機(jī)瀏覽器的菜單是不是顯示正常。

MonkeyRunner支持的功能總結(jié)

物理按鍵操作

屏幕操作(比如點(diǎn)擊、長(zhǎng)按、拖動(dòng))

安裝/卸載應(yīng)用

支持多設(shè)備/模擬器

通過(guò)控件進(jìn)行操作

執(zhí)行shell命令(比如可以直接刪除文件)

發(fā)送boardcast

錄制與回放功能

這里簡(jiǎn)單介紹一下錄制與回放的功能,這個(gè)功能并沒(méi)有一個(gè)單獨(dú)的程序入口,我們同樣需要在MonkeyRunner中運(yùn)行一段腳本:

腳本執(zhí)行完后就會(huì)出現(xiàn)錄制與回放的界面:

就是這樣一個(gè)簡(jiǎn)單的界面,點(diǎn)擊左邊的截圖會(huì)記錄一條點(diǎn)擊動(dòng)作,上面的那一排按鈕可以增加一些其它的動(dòng)作,比如延時(shí)或者鍵盤動(dòng)作。

Export Actions可以保存錄制的內(nèi)容,但保存的并不是Python腳本文件,你同樣需要編寫另外一段腳本來(lái)回放這段錄制,除此之外你也可以選擇利用剛才錄制時(shí)的坐標(biāo)自己編寫點(diǎn)擊的操作。

使用坐標(biāo)編寫腳本的局限性

MonkeyRunner默認(rèn)的屏幕操作都是根據(jù)絕對(duì)坐標(biāo),比如需要在剛才的腳本基礎(chǔ)上進(jìn)一步點(diǎn)擊菜單上的設(shè)置功能,通過(guò)截圖或者腳本錄制工具,你已經(jīng)知道了設(shè)置菜單項(xiàng)的坐標(biāo)是(72, 684),這樣就可以使用MonkeyDevice的touch方法來(lái)點(diǎn)擊設(shè)置按鈕:

device.touch(72, 684, "DOWN_AND_UP")

但是很不幸的,我們是用小米1編寫的測(cè)試腳本,小米1S的分辨率是480×854,如果換成別的設(shè)備,分辨率可能會(huì)發(fā)生改變,設(shè)置按鈕的位置就不再是(72, 684)。

好在很多情況下控件的位置和大小是按照屏幕的百分比計(jì)算的,比如說(shuō)不管分辨率是多少,搜狗瀏覽器的設(shè)置都會(huì)出現(xiàn)在屏幕15%寬、80%高的地方。這樣我們就可以根據(jù)相對(duì)坐標(biāo)來(lái)編寫自動(dòng)化腳本:

還有的情況下,控件的位置和大小并不滿足這個(gè)規(guī)律,比如搜狗瀏覽器的設(shè)置頁(yè)面,在小米1和小米4兩臺(tái)不同的設(shè)備上,一屏能夠顯示的內(nèi)容都不一樣多,可以看出其中每個(gè)項(xiàng)目的相對(duì)坐標(biāo)在這兩臺(tái)設(shè)備間很難統(tǒng)一。

最后,如果被測(cè)程序改版,對(duì)控件重新排序或布局,舊的自動(dòng)化腳本也可能會(huì)失效。

為了解決這個(gè)問(wèn)題,最好按照坐標(biāo)以外的方式編寫自動(dòng)化腳本。本系列的第三篇文章將會(huì)介紹如何利用控件的id編寫MonkeyRunner的自動(dòng)化腳本。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容