1. 程式人生 > >MonkeyScript API 文件

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)

它的引數分別表示了兩個手指的開始位置和結束位置,並且設定了完成了多少次縮放操作。