MS 是官方提供的,除了像猴子同樣隨機亂點以外,還能夠經過編寫腳本的形式,完成一系列固定的操做。MS 提供一整套完善的 API 來進行支持,主要仍是基於座標點的操做,包含經常使用的:點擊、長按、輸入、等待等操做。shell
2、 MonkeyScript的使用app
MS腳本只要是文本便可,不關心後綴是什麼,因此編寫時不要添加後綴,保存文本格式便可。測試
MS 腳本雖然有一些指定的 API ,可是也有一些固定的腳本頭,須要寫在腳本的最前面。spa
type=user.net
count = 1日誌
speed = 1.0code
start data >>blog
在腳本中,腳本頭是一直不變更的,爲了不寫錯,能夠直接複製粘貼最保險。在 start data>> 以後就能夠正式開始編寫 monkey 腳本了,在腳本中,使用 #
號,對單行進行註釋。事件
MonkeyScript是須要指定Activity(當前app展現的界面)的,獲取當前指定界面Activity名稱的指令爲adb shell dumpsys activity | grep mFocused。ip
下面以測試登陸功能爲例:
LaunchActivity(Activity)
UserWait(1000)
DispatchPointer(0,0,0,303,312,0,0,0,0,0,0,0)
DispatchPointer(0,0,1,303,312,0,0,0,0,0,0,0)
UserWait(1000)
DispatchString(1234566)
UserWait(100)
//輸入密碼
DispatchPointer(0,0,0,345,393,0,0,0,0,0,0,0)
DispatchPointer(0,0,1,345,393,0,0,0,0,0,0,0)
UserWait(100)
DispatchString(1234567)
UserWait(1000)
//點擊空白處讓鍵盤消失
DispatchPointer(0,0,0,100,100,0,0,0,0,0,0,0)
DispatchPointer(0,0,1,100,100,0,0,0,0,0,0,0)
UserWait(1000)
//點擊登陸按鈕
DispatchPointer(0,0,0,361,507,0,0,0,0,0,0,0)
DispatchPointer(0,0,1,361,507,0,0,0,0,0,0,0)
UserWait(3000)
腳本解釋:
首先啓動你要測試的界面,此處爲登陸界面,登陸界面有三個控件,用戶名的textField,密碼的textField,和登陸按鈕。
LaunchActivity()
做用爲來到登陸界面
UserWait(1000)
等待1秒之後執行下一個操做
DispatchPointer(0,0,0,303,312,0,0,0,0,0,0,0)
DispatchPointer(0,0,1,303,312,0,0,0,0,0,0,0)
DispatchPointer點擊用戶名的textField,只需關注3,4,5這三個參數便可,第三個參數爲0表示點擊了textField ,爲1表示鬆開了textField,4,5兩個參數分別爲用戶名textField 的x,y座標。
DispatchString(123456)
在用戶名的textField中輸入123456用戶名
按照上面的操做在密碼的textField輸入密碼,點擊登陸按鈕,整改登陸測試就完成了,若是須要繼續測試登陸後的界面則須要重新啓動新的Activity。
//登陸成功後來到首頁點擊發布做業功能(具體什麼功能和第4,5個參數設置的值有關)
LaunchActivity(Activity)
UserWait(1000)
DispatchPointer(0,0,0,650,182,0,0,0,0,0,0,0)
DispatchPointer(0,0,1,650,182,0,0,0,0,0,0,0)
UserWait(1000)
Drag(500,1500,500,500,12)
#向上滑動
將寫好的腳本保存到本地。
2. Monkey 啓動 MonkeyScript 的命令以下:
adb shell monkey -f <MonkeyScript> <EventCount>
<MonkeyScript>指你編寫的MonkeyScript腳本,
<EventCount>指Monkey事件,例如執行次數,日誌詳情等。
具體指令:
其餘簡介
LaunchActivity(pkg_name, cl_name):啓動應用的Activity。參數:包名和啓動的Activity。
Tap(x, y, tapDuration): 模擬一次手指單擊事件。參數:x,y爲控件座標,tapDuration爲點擊的持續時間,此參數可省略。
DispatchPress(keyName): 按鍵。參數: keycode。 詳細的Android Keycode列表: http://blog.csdn.net/feizhixuan46789/article/details/16801429
RotateScreen(rotationDegree, persist): 旋轉屏幕。 參數:rotationDegree爲旋轉角度, e.g. 1表明90度;persist表示旋轉以後是否固定,0表示旋轉後恢復,非0則表示固定不變。
DispatchFlip(true/false): 打開或者關閉軟鍵盤。
LongPress(): 長按2秒。
PressAndHold(x, y, pressDuration): 模擬長按事件。
DispatchString(input): 輸入字符串。
Drag(xStart, yStart, xEnd, yEnd, stepCount): 用於模擬一個拖拽操做。
PinchZoom(x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End, stepCount): 模擬縮放手勢。
UserWait(sleepTime): 休眠一段時間
DeviceWakeUp(): 喚醒屏幕。
PowerLog(power_log_type, test_case_status): 模擬電池電量信息。
WriteLog(): 將電池信息寫入sd卡。
RunCmd(cmd): 運行shell命令。
DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFlags): 向指定位置,發送單個手勢。
DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFilags): 發送按鍵消息。
LaunchInstrumentation(test_name,runner_name): 運行一個instrumentation測試用例。
DispatchTrackball: 模擬發送軌跡球事件。
ProfileWait: 等待5秒。
StartCaptureFramerate(): 獲取幀率。
EndCaptureFramerate(input): 結束獲取幀率。