MonkeyScript API 文件
一、前言
本文件記錄了和 MonkeyScript 相關的 API 文件,由承香墨影整理。所有 API 描述均來自 MonkeySourceScript.java 。
也可以自行檢視原始碼,線上閱讀地址:
http://androidxref.com/5.1.1_r6/xref/development/cmds/monkey/src/com/android/commands/monkey/MonkeySourceScript.java
希望在閱讀本文件前,你已經掌握了基本的 Monkey Script 的操作,可以在本公眾號回覆『MonkeyScript如何寫指令碼』
二、MonkeyScript API
1、點選事件(DispatchPointer)
DispatchPointer 命令用於向一個指定的座標位置,傳送單個手勢訊息,一般用它來模擬點選的操作。
它完整的方法簽名是:
DispatchPointer ( downTime , eventTime , action , x , y , pressure , size , metaState , xPrecision , yPrecision , device , edgeFlags)
其實這麼多引數,只需要關注action 、 x 、y 三個引數即可。
- action :事件是按下還是擡起,0 表示按下,1 表示擡起。
- x、y:表示當前事件觸發的X軸和Y軸的座標。
也就是說,兩個 DispatchPointer 命令加在一起,分別表示 按下 和 擡起 ,這表示一次點選操作,其餘的引數,統一設定為 0 即可。
2、按鍵事件(DispatchKey)
DispatchKey 主要是用於傳送一些 Android 標準的 EventKey 按鍵訊息。但是需要寫對應的值。
它的方法簽名如下:
DiapatchKey ( downTime ,eventTime ,action ,code ,repeat ,metaState ,device ,scancode)
DispatchKey 實際上也只需要關注,action、code、repeat即可。
- action : 訊息的型別。0 表示按下,1 表示擡起。
- code:按鍵的值。參考KeyEvent。
- repeat:按鍵重複的次數
具體的鍵值,可以通過官網查詢:
https://developer.android.com/reference/android/view/KeyEvent.html
3、軌跡球(DispatchTrackball)
DispatchTrackball 命令用於像一個指定位置傳送單個軌跡球的訊息。它的方法前面也與 DispatchPointer 一樣。
4、旋轉螢幕(RotateScreen)
RotateScreen 命令用於傳送旋轉測試裝置螢幕方式的事件。
它的方法簽名如下:
RotateScreen ( rotationDegree , persist)
其中的引數:
- rotateDegree:旋轉的角度。
- persist:是否保持旋轉前的狀態。0 為不保持,1 為保持。
rotateDegree,可配置的角度可以參考 android.view.Surface裡的常量進行配置,可選的角度有 4 個:
- ROTATION_0
- ROTATION_90
- ROTATION_180
- ROTATION_270
5、軟鍵盤開關(DispatchFlip)
DispatchFlip 命令用於開啟或者關閉軟鍵盤。它的方法簽名如下:
DispatchFlip (keyboardOpen)
其中的引數,true 表示開啟,false 表示關閉。
6、鍵盤事件(DispatchPress)
DispatchPress 命令用於模擬敲擊鍵盤的事件。
它的方法簽名如下:
DispatchPress( keyName )
7、啟動Activity(LaunchActivity)
LaunchActivity 命令用於開啟任意應用的一個頁面,但是前提條件是開啟的Activity 需要屬性 android:exported 被設定為true,才可以通過 LaunchActivity 開啟。它的方法簽名如下:
LaunchActivity ( pkg_name , act_name )
它的兩個引數,分別表示開啟的 App 的包名和開啟的 Activity 的名稱。
8、等待(UserWait)
UserWait 命令用於讓指令碼中斷執行一段時間。因為是指令碼執行,多個事件之間執行的速度會非常的快,有時候我們需要等待一些事件觸發之後的結果返回,需要等待一段時間之後,再繼續執行指令碼,這個時候就可以使用 UserWait 。
它的方法簽名如下:
UserWait ( sleepTime )
sleepTime 的單位是毫秒。
9、輸入字串(DispatchString)
DispatchString 命令用於向 Shell 輸入一個字串。
它的方法簽名如下:
DispatchString( input )
沒什麼好解釋的, input 就是一個字串即可,但是 MS 對中文的支援並不好,所以儘量輸入英文的測試資料。
10、長按(LongPress)
LongPress 命令用於模擬長按時間,標準為長按 2s 。它是一個無參的方法,直接呼叫即可。
11、執行 Shell 命令(RunCmd)
RunCmd 命令用於在裝置上執行 shell 命令。當然這些 shell 命令必須是當前待測試裝置支援的 shell 命令。
它的方法簽名如下:
RunCmd ( cmd )
引數 cmd 就是需要執行的 shell 命令。
12、手指單擊(Tap)
Tap 命令用於模擬一次手指單擊事件。
它的方法簽名如下:
Tap( x ,y ,tapDuration)
tapDuration 引數,表示當前單擊的持續時間,可選引數。
13、喚醒裝置並解鎖(DeviceWakeUp)
DeviceWakeUp 命令可以喚醒裝置,並進行解鎖。當然需要是一個無加密的裝置才可以,有數字密碼或者圖形密碼,都會導致失敗。
14、等待5s(ProfileWait)
ProfileWait 命令和 UserWait 類似,但是它已經設定好等待的時長,就是 5s ,直接呼叫即可。
15、長按訊息(PressAndHold)
PressAndHold 命令用於模擬一個長按事件,和 LongPress 類似,但是它是可以定製長按時長的。
它的方法簽名如下:
PressAndHold( x, y, pressDuration)
16、拖拽(Drag)
Drag 命令用於模擬一個按住拖拽的動作。
它的方法簽名如下:
Drag( xStart, yStart, xEnd, yEnd, stepCount)
前面四個引數分別表示了事件開始的座標點,和結束的座標點。唯一需要解釋的是stepCount ,因為拖拽事件是一組連續的事件,這個引數可以指定當前拖拽事件,是由多少個小事件組成的,越多,越連貫。
17、縮放事件(PinchZoom)
PinchZoom 命令用於模擬縮放手勢。
它的方法簽名如下:
PinchZoom( pt1xStart, pt1yStart, pt1xEnd, pt1yEnd, pt2xStart, pt2yStart, pt2xEnd, pt2yEnd, stepCount)
它的引數分別表示了兩個手指的開始位置和結束位置,並且設定了完成了多少次縮放操作。