Monkeyrunner是一套android device自動化測試的工具
腳本使用jython語言
詳細的介紹如下:
http://developer.android.com/tools/help/monkeyrunner_concepts.html
不過由於monkeydevice的takeSnapshot method丟出exception的機率太高
導致我不得不放棄monkeyrunner轉向AndroidViewClient
AndroidViewClient是純python語言寫成
原始碼在此
https://github.com/dtmilano/AndroidViewClient
Download
安裝方式為
windows內環境變數加上
變數:
ANDROID_VIEW_CLIENT_HOME
值:
C:\AndroidViewClient-master\AndroidViewClient\src
之後就能夠直接於python內調用了
連接上deivce並screenshot的範例腳本
from com.dtmilano.android.adb.adbclient import AdbClient
if len(sys.argv) >= 2:
serialno = sys.argv[1]
else:
serialno = '.*'
device = AdbClient(serialno=serialno)
img = device.takeSnapshot()
另外monkeyimage的功能必須使用PIL (Python Image Library)來替代
http://www.pythonware.com/products/pil/
讀取電腦中的picimg圖片與拍screenshot之後切圖下來的picimg2作比對的腳本
#Monkeyrunner
picimp = MonkeyRunner.loadImageFromFile('./pic/picimp.png')
picimp2=device1.takeSnapshot()
picimp2=picimp2.getSubImage((300,660,150,70))
if picimp.sameAs(picimp2) == 1:
#AndroidViewClient with PIL
picimp = Image.open("../pic/picimp.png")
picimp2= device1.takeSnapshot(reconnect=True)
picimp2= picimp2.transform((150,60),Image.EXTENT, (300,660,450,720))
if device1.sameAs(picimp, picimp2, 1)== 1:
整體來說
AndroidViewClient效率高出Monkeyrunner許多
而且takesnapshot也不像monkeydevice一樣太多的出錯
目前實測沒有出錯過
如果要跑長時間的測試有包含到takesnapshot
使用AndroidViewClient會好上許多
補充:
monkeyrunner下的read()與python的read()不太一樣
我的python file.read()讀不出tshark所擷取的封包資訊
反而monkeyrunner下使用的file.read()就能夠讀取出來
估計是monkeyrunner使用java的直譯器的關係