Android 測試 之MonkeyRunner

來源:互聯網
上載者:User

標籤:put   com   turn   套件   ram   some   導航   snap   ase   

一、什麼是MonkeyRunner

monkeyrunner工具提供了一個API,使用此API寫出的程式可以在Android代碼之外控制Android裝置和模擬器。通過monkeyrunner,您可以寫出一個Python程式去安裝一個Android應用程式或測試包,運行它,向它發送類比擊鍵,截取它的使用者介面圖片,並將儲存於工作站上。monkeyrunner工具的主要設計目的是用於測試功能/架構水平上的應用程式和裝置,或用於運行單元測試套件,但您當然也可以將其用於其它目的。

二、MonkeyRunner工具同Monkey工具的差別

Monkey:

Monkey工具直接運行在裝置或模擬器的adb shell中,產生使用者或系統的偽隨機事件流。

monkeyrunner:

monkeyrunner工具則是在工作站上通過API定義的特定命令和事件控制裝置或模擬器。

三、MonkeyRunner的測試類型

1、多裝置控制:monkeyrunner API可以跨多個裝置或模擬器實施測試套件。您可以在同一時間接上所有的裝置或一次啟動全部模擬器(或統統一起),依據程式依次串連到每一個,然後運行一個或多個測試。您也可以用程式啟動一個配置好的模擬器,運行一個或多個測試,然後關閉模擬器。

2、 功能測試: monkeyrunner可以為一個應用自動貫徹一次功能測試。您提供按鍵或觸摸事件的輸入數值,然後觀察輸出結果的截屏。

3、 迴歸測試:monkeyrunner可以運行某個應用,並將其結果截屏與既定已知正確的結果截屏相比較,以此測試應用的穩定性。

4、 可擴充的自動化:由於monkeyrunner是一個API工具包,您可以基於Python模組和程式開發一整套系統,以此來控制Android裝置。除了使用monkeyrunner API之外,您還可以使用標準的Python os和subprocess模組來調用Android Debug Bridge這樣的Android工具。

四、運行MonkeyRunner

您可以直接使用一個代碼檔案運行monkeyrunner,抑或在互動式對話中輸入monkeyrunner語句。不論使用哪種方式,您都需要調用SDK目錄的tools子目錄下的monkeyrunner命令。如果您提供一個檔案名稱作為運行參數,則monkeyrunner將視檔案內容為Python程式,並加以運行;否則,它將提供一個互動對話環境。

monkeyrunner的命令文法為:

monkeyrunner -plugin <plugin_jar> <program_filename> <program_options>

1. CMD對話方塊運行方式

  如:

中,我們類比了一次(160,450)的座標點擊和一次返回的按鍵點擊,並分別:

可以看出,點擊返回後,模擬器UI回到了主介面。

2.代碼檔案運行方式

(1)在$Android_Root\tools下建立一個monkeyrunnerprogram.py檔案,裡面內容為:

代碼如下:

# Imports the monkeyrunner modules used by this program

from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage

# Connects to the current device, returning a MonkeyDevice object

device = MonkeyRunner.waitForConnection()

device.touch(160,450,"DOWN_AND_UP")

print "touch"

MonkeyRunner.sleep(1)

print "shoting... shot.png"

# Takes a screenshot

result = device.takeSnapshot()

filename = ‘./shot.png‘

# Writes the screenshot to a file

result.writeToFile(filename,‘png‘)

print filename

MonkeyRunner.sleep(1)

# Do some tests

# Presses the Menu button

device.press(‘KEYCODE_BACK‘,‘DOWN_AND_UP‘)

print "press BACK"

print "shoting... shot.png"

# Takes a screenshot

result = device.takeSnapshot()

filename = ‘./shot1.png‘

# Writes the screenshot to a file

result.writeToFile(filename,‘png‘)

print filename

MonkeyRunner.sleep(1)

(2)開啟命令列,轉到Android_Root\tools目錄下,運行以下命令:

monkeyrunner monkeyrunnerprogram.py

可以達到和剛才相同的測試效果

五、MonkeyRunner詳細用法

1. #匯入模組;

from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage

2. #串連當前裝置,並返回一個MonkeyDevice對象;

device = MonkeyRunner.waitForConnection()

if not device:

print "Please connect a device to start!"

else:

print "Start "

3. #安裝Android包,注意,此方法返回的傳回值為boolean,由此可以判斷安裝過程是否正常;

device.installPackage(‘myproject/bin/MyApplication.apk‘)

device.removePackage (‘com.example.android.notepad‘)

print (‘卸載成功‘)

device.installPackage(‘ApiDemos.apk‘)

print (‘安裝成功‘)

4. #啟動一個Activity;

device.startActivity(component=‘com.android.htccontacts/com.android.htccontacts.ContactsTabActivity‘)

5. #;

result = device.takeSnapshot()

result.writeToFile(‘C:\\Users\\Martin\\Desktop\\test.png‘,‘png‘)

6. #時延(秒);

MonkeyRunner.sleep(3)

7. #滑動螢幕;

for i in range(1,70):

device.drag((250,850),(250,110),0.1,10)

     //開始,結束,期間,步驟

for i in range(1,70):

device.drag((250,110),(250,850),0.1,10)

MonkeyRunner.sleep(1)

8. #觸擊螢幕;

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

9. #執行adb shell命令;

device.shell("input text goup01")

按下HOME鍵

device.press(‘KEYCODE_HOME‘,‘DOWN_AND_UP‘)

按下BACK鍵

device.press(‘KEYCODE_BACK‘,‘DOWN_AND_UP‘)

按下下導航鍵

device.press(‘KEYCODE_DPAD_DOWN‘,‘DOWN_AND_UP‘)

按下上導航鍵

device.press(‘KEYCODE_DPAD_UP‘,‘DOWN_AND_UP‘)

按下OK鍵

device.press(‘KEYCODE_DPAD_CENTER‘,‘DOWN_AND_UP‘)

相應的按鍵對應的名稱如下:

home鍵:KEYCODE_HOME

back鍵:KEYCODE_BACK

send鍵:KEYCODE_CALL

end鍵:KEYCODE_ENDCALL

上導航鍵:KEYCODE_DPAD_UP

下導航鍵:KEYCODE_DPAD_DOWN

左導航:KEYCODE_DPAD_LEFT

右導航鍵:KEYCODE_DPAD_RIGHT

ok鍵:KEYCODE_DPAD_CENTER

上音量鍵:KEYCODE_VOLUME_UP

下音量鍵:KEYCODE_VOLUME_DOWN

power鍵:KEYCODE_POWER

camera鍵:KEYCODE_CAMERA

menu鍵:KEYCODE_MENU

Android 測試 之MonkeyRunner

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.