MonkeyRunner 實現自動點擊截屏后與本地圖庫進行對比輸出


先說下本人是菜鳥,通過網上資料學習,終於調通了MonkeyRunner 實現自動點擊截屏后與本地圖庫進行對比輸出,以后做靜態UI測試就不需要眼睛盯着看圖了,這一切交給MonkeyRunner了。

首先通過monkeyrunner錄制腳本 test.mr

test.mr

TOUCH|{'x':265,'y':1232,'type':'downAndUp',} WAIT|{'seconds':5.0,} TOUCH|{'x':355,'y':189,'type':'downAndUp',} WAIT|{'seconds':5.0,} TOUCH|{'x':85,'y':322,'type':'downAndUp',} WAIT|{'seconds':5.0,} TOUCH|{'x':371,'y':893,'type':'downAndUp',} WAIT|{'seconds':5.0,} TOUCH|{'x':371,'y':893,'type':'downAndUp',} WAIT|{'seconds':5.0,} TOUCH|{'x':47,'y':778,'type':'downAndUp',} WAIT|{'seconds':5.0,} TOUCH|{'x':657,'y':88,'type':'downAndUp',} WAIT|{'seconds':5.0,}

然后通過python寫自動截屏對比功能 monkey_snapshot.py

#!/usr/bin/env monkeyrunner # Copyright 2010, The Android Open Source Project #coding=utf8 import sys from com.android.monkeyrunner import MonkeyDevice from com.android.monkeyrunner import MonkeyImage from com.android.monkeyrunner import MonkeyRunner CMD_MAP = { 'TOUCH': lambda dev, arg: dev.touch(**arg), 'DRAG': lambda dev, arg: dev.drag(**arg), 'PRESS': lambda dev, arg: dev.press(**arg), 'TYPE': lambda dev, arg: dev.type(**arg), 'WAIT': lambda dev, arg: MonkeyRunner.sleep(**arg) } def process_file(fp, device,photo_id): for line in fp: (cmd, rest) = line.split('|') try: rest = eval(rest) except: print 'unable to parse options' continue if cmd not in CMD_MAP: print 'unknown command: ' + cmd continue CMD_MAP[cmd](device, rest) print cmd pic_name='./shot'+str(photo_id)+'.png' result = device.takeSnapshot() #compare picture result2 = MonkeyRunner.loadImageFromFile("E:\MD\shot"+str(photo_id)+".png") print "E:\MD\shot"+str(photo_id)+".png" flag = result.sameAs(result2,0.95) if (flag == False): print 'prapre to save new png '+pic_name result.writeToFile(pic_name,'png') photo_id+=1 print "All PlayBack Action Captured,Total:"+str(photo_id)+' PNG Saved' print "===============================================================" def main(): print "Ok,Now StarRuning MyZXX MonkeyRuner SnopShoot Shell" print "===============================================================" device = MonkeyRunner.waitForConnection() package = 'com.qunsheng.md' activity = 'com.qunsheng.md.activity.WelcomeActivity' runComponent = package + '/' + activity device.startActivity(component=runComponent) MonkeyRunner.sleep(30) #device.press('KEYCODE_MENU','DOWN_AND_UP') #result = device.takeSnapshot() #result.writeToFile('./shot5.png','png') file = sys.argv[1] fp = open(file, 'r') photo_id=0 process_file(fp, device,photo_id) fp.close(); if __name__ == '__main__': main()

最后腳本運行,將圖片對比后95%部分都不相像的截圖自動保存在當前目錄

monkeyrunner monkey_snapshot.py E:\test.mr


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM