MonkeyRunner實戰 自動化操作計算器計算

2022-09-11 23:48:36 字數 3288 閱讀 9386

前面幾張詳細的講了monkeyrunner的模組,包括monkeyrunner、monkeydevice、monkeyimage,也包括easymonkeydevice,還有gethierarchyviewer這樣的一些方法。

這一章具體的使用python來編寫自動化測試的指令碼,利用monkeyrunner完成自動化測試。

case1

用press、touch方法分別觸發計算器按鍵,並用monkeyimage比較兩次計算結果是否一致

python指令碼的編寫如下:

#第一次運算press

from com.android.monkeyrunner import monkeyrunner,monkeydevice,monkeyimage   #匯入模組

from com.android.monkeyrunner.easy import easymonkeydevice,by     #匯入方法

device = monkeyrunner.waitforconnection()     #建立和裝置的連線

print '******case1:use monkeydevice and monkeyimage to check calculator result******' #輸出

device.startactivity('com.android.calculator2/.calculator') #啟動應用

print '---- calculator 3*8 with press method'

device.press('keycode_3',monkeydevice.down_and_up)

device.press('keycode_numpad_multiply',monkeydevice.down_and_up)

device.press('keycode_8',monkeydevice.down_and_up)

device.press('keycode_equals',monkeydevice.down_and_up)

easy = easymonkeydevice(device)

image = device.takesnapshot() #把當前的介面儲存到monkeyimage物件裡

subimage = image.getsubimage(easy.locate(by.id('id/display')))

#開啟uiautomatorviewer檢視儲存結果文字框的座標範圍[0,75][912,426],由於結果只在區域有半部分,所以座標可以變為[300,75][912,426]

subimage = image.getsubimage((300,75,612,351)) #這樣子就儲存了第一次運算的結果

#第二次運算touch

print '---- calculator 4*6 with touch method'

easy.touch(by.id('id/digit4'),monkeydevice.down_and_up)

easy.touch(by.id('id/mul'),monkeydevice.down_and_up)

easy.touch(by.id('id/digit6'),monkeydevice.down_and_up)

easy.touch(by.id('id/equal'),monkeydevice.down_and_up)

image2 = device.takesnapshot()

subimage2 = image2.getsubimage(easy.locate(by.id('id/display')))

if (subimage2.sameas(subimage,0.8)):

print '[pass] the resault of 3*8 and 4*6 is equal !'

else:

print '[fail] the resault of 3*8 and 4*6 is not equal !'

把以上的指令碼編寫好命名為calculator_mr.py儲存到c:\users\hou-00下面,然後把指令碼拖到命令列執行

用easymonkeydevice來獲取按鍵並觸發,再用hierarchyviewer獲取物件屬性校驗結果正確性

from com.android.monkeyrunner import monkeyrunner,monkeydevice,monkeyimage  

from com.android.monkeyrunner.easy import easymonkeydevice,by               

device = monkeyrunner.waitforconnection()     

print '******case2: use easymonkeydevice to check claculator result******' 

print '---- calculator 5*7 with easymonkeydevice touch'

easy = easymonkeydevice(device)

easy.touch(by.id('id/digit5'),monkeydevice.down_and_up)

easy.touch(by.id('id/mul'),monkeydevice.down_and_up)

easy.touch(by.id('id/digit7'),monkeydevice.down_and_up)

easy.touch(by.id('id/equal'),monkeydevice.down_and_up)

hv=device.gethierarchyviewer()

view = hv.findviewbyid('id/display')

str =view.children[0].namedproperties.get('text:mtext').tostring().split('=')[1].encode('utf8')

if (str == '35'):

print '[pass] the result of 5*7 is correct!'

else:

print '[fail] the result of 5*7 is correct! the result is -- ' +str

easy.touch(by.id('id/clear'),monkeydevice.down_and_up)

device.press('keycode_back',monkeydevice.down_and_up)

SQL自連線實戰

自連線 資料表與自身進行連線。從乙個包含欄目id 欄目名稱和父欄目id的表中查詢父欄目名稱和其他子欄目名稱。將一張表分為父表和子表 父表categoryid categoryname 資訊科技 軟體開發 美術設計 子表categoryid pidcategoryname 資料庫web開發 ps技術 ...

MonkeyRunner基本操作

1.匯入模組 from com.android.monkeyrunner import monkeyrunner,monkeydevice,monkeyimage 2.連線當前裝置,並返回乙個monkeydevice物件 device monkeyrunner.waitforconnection i...

monkey與monkeyrunner的使用

monkey是android中的乙個命令列工具,可以執行在模擬器裡或實際裝置中。它向系統傳送偽隨機的使用者事件流 如按鍵輸入 觸控螢幕輸入 手勢輸入等 實現對正在開發的應用程式進行壓力測試。monkey測試是一種為了測試軟體的穩定性 健壯性的快速有效的方法。1 測試的物件僅為應用程式包,有一定的侷限...