MonkeyScript的簡單使用


MonkeyScript的簡單使用

一、 什么是MonkeyScript

MS 是官方提供的,除了像猴子一樣隨機亂點之外,還可以通過編寫腳本的形式,完成一系列固定的操作。MS 提供一整套完善的 API 來進行支持,主要還是基於坐標點的操作,包含常用的:點擊、長按、輸入、等待等操作。

 

二、 MonkeyScript的使用

  1. 編寫MonkeyScript的測試腳本。

MS腳本只要是文本即可,不關心后綴是什么,所以編寫時不要添加后綴,保存文本格式即可。

 

MS 腳本雖然有一些指定的 API ,但是也有一些固定的腳本頭,需要寫在腳本的最前面。

 

type=user

count = 1

speed = 1.0

start data >>

 

在腳本中,腳本頭是一直不變動的,為了避免寫錯,可以直接復制粘貼最保險。在 start data>> 之后就可以正式開始編寫 monkey 腳本了,在腳本中,使用 # 號,對單行進行注釋。

 

MonkeyScript是需要指定Activity(當前app展示的界面)的,獲取當前指定界面Activity名稱的指令為adb shell dumpsys activity | grep mFocused。

 

下面以測試登錄功能為例:

 

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事件,例如執行次數,日志詳情等。

 

具體指令:

  1. adb shell mkdir /sdcard/script 在設備上創建script文件夾用於存放腳本
  2. 將本地腳本文件push到設備中上面創建的文件夾中。例如adb push /Users/userName/Desktop/testLogin空格/sdcard/script,/Users/userName/Desktop/testLogin就是你腳本在本地的存放路徑。
  3. 執行adb shell monkey -f /sdcard/script/你的腳本名稱 –v –v 10 >C:\monkey.txt即可,>C:\monkey.txt為日志輸出路徑。

 

 其他簡介

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): 結束獲取幀率。

 


免責聲明!

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



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