python使用monkeyrunner對錄製指令碼進行回放指令碼
阿新 • • 發佈:2019-02-08
Android SDK與Python環境配置完畢,呼叫MonkeyRunner的MonkeyRecorder與MonkeyRunner介面啟動指令碼錄製工具,指令碼我命名為app_playback.py,把編寫的指令碼放在Android SDK安裝目錄下面的\tools目錄下,與monkeyrunner.bat在同一級目錄下:
#coding=utf8 #需要用到命令列引數列表因此匯入sys import sys #匯入monkeyrunner用來操作裝置 from com.android.monkeyrunner import MonkeyRunner #窗念一個命令雜湊表,定義操作事件 CMD_MAP = { 'TOUCH': lambda device, arg: device.touch(**arg), 'DRAG': lambda device, arg: device.drag(**arg), 'PRESS': lambda device, arg: device.press(**arg), 'TYPE': lambda device, arg: device.type(**arg), 'WAIT': lambda device, arg: MonkeyRunner.sleep(**arg) } #處理錄製指令碼檔案 #定義兩個引數: #scriptfile----錄製指令碼的檔名 #device--------當前裝置 def process_file(scriptfile, device): #讀取檔案資訊 for line in scriptfile: #檔案以|進行分割 #把命令放入cmd中 #把命令操作之後的資訊存入rest中 (cmd, rest) = line.split('|') try: #將字串rest當成有效的表示式來求值並返回計算結果 rest = eval(rest) except: print 'unable to parse options' continue #判斷命令是否在 CMD_MAP中 if cmd not in CMD_MAP: print 'unknown command: ' + cmd continue #回放指令碼中命令操作 CMD_MAP[cmd](device, rest) def main(): #在命令列輸入例如: #monkeyrunner app_playback "檔名[可以帶有路徑]" file = sys.argv[1] #開啟錄製指令碼 scriptfile = open(file, 'r') #對連線的物件建立一個物件 device = MonkeyRunner.waitForConnection() #呼叫回放函式,對指令碼進行回放 process_file(scriptfile, device) #關閉指令碼檔案 scriptfile.close(); #判斷是否作為執行程式 #如果是執行main函式 if __name__ == '__main__': main()
命令執行狀態,如果第一次執行指令碼時,會準備monkeyrunner與python環境,我執行命名如下: 上面一大坨是用於演示,首次執行指令碼時候的操作; 執行成功後再次執行相同的命令,如果沒有錯誤,說明指令碼執行成功,你可以看到手機上的app被開啟