1. 程式人生 > >python使用monkeyrunner對錄製指令碼進行回放指令碼

python使用monkeyrunner對錄製指令碼進行回放指令碼

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被開啟