前面幾張詳細的講了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 測試的物件僅為應用程式包,有一定的侷限...