Monkey進階——MonkeyScript腳本

前言

MonkeyScript是一組可以被Monkey識別的命令集合,可以用它來完成重複固定的操作。
相對於Monkey,Monkey是完成隨機事件,但是有時候我們需要完成的過程是固定的,這個時候Monkey本身就已經無法滿足需求了這是我們就需要把我們的需求寫成一個腳本。
相對於Appuim使用控件id來進行定位並操作,其缺陷在於面對不同分辨率的手機腳本適用性差,會出現點擊錯位的現象,以致於不能正常完成預定的操作。(這裏有個好用的定位技巧:打開手機的開發模式,並開啓指針位置這個功能,能夠方便的獲得控件的橫縱座標。

一、MonkeyScript的使用

執行腳本指令:
adb shell monkey -f MonkeyScript EventCount
解釋:MonkeyScript:腳本名稱,包括寫入腳本的路徑;EventCount:執行次數
注意:因爲 adb shell 的運行環境是在Android 設備上,所以需要將MS腳本 pull 到待測試的設備上,然後再運行。

二、MonkeyScript常用的API

1、Activity(LaunchActivity)
方法簽名:LaunchActivity ( pkg_name , act_name )
解釋:用於打開指定的頁面,它的兩個參數,分別表示打開的 App 的包名和打開的 Activity 的名稱。
注意:LaunchActivity 命令用於打開的Activity 需要屬性 android:exported 被設定爲true,纔可以通過 LaunchActivity 打開。
2、點擊事件(DispatchPointer)
方法簽名:DispatchPointer ( downTime , eventTime , action , x , y , pressure , size , metaState , xPrecision , yPrecision , device , edgeFlags)
解釋:用於向一個指定的座標位置,發送單個手勢消息,相當於模擬點擊的操作。
action的值:0 表示按下,1 表示擡起。
x、y的值:模擬點擊位置的橫、縱座標值。
技巧點撥:當你需要模擬一個滑塊的滑動操作,可以將終點位置的action的值設爲2
eg:(滑塊橫向滑動)
#滑動方塊解鎖
DispatchPointer(10,10,0,236,1502,1,1,-1,1,1,0,0)
UserWait(1000)
DispatchPointer(10,10,2,872,1502,1,1,-1,1,1,0,0)
3、等待(UserWait)
方法簽名:UserWait ( sleepTime )
解釋:用於讓腳本中斷執行一段時間
4、輸入字符串(DispatchString)
方法簽名:DispatchString( input )
解釋:直接輸入英文數據,不需要引號
注意:對中文不友好
5、鍵盤事件(DispatchPress)
方法簽名:DispatchPress( keyName )
解釋:用於模擬敲擊鍵盤的事件
6、打開關閉軟鍵盤(DispatchFlip)
方法簽名:DispatchFlip (keyboardOpen)
解釋:用於打開或者關閉軟鍵盤;參數:true 表示打開,false 表示關閉

三、MonkeyScript腳本編寫

1、固定頭文件:
type=user
count=10
speed=1.0
start data >>
解釋:
type指明類型
count說明執行次數,但是這裏改成任何值都執行一次,monkey命令來指定執行次數
speed命令執行速率。改動無影響,可以通過monkey命令行指定。
以上三個參數改動都沒什麼影響,一般不做改動。
2、腳本具體例子:
type=user
count=10
speed=1.0
start data >>
LaunchActivity(com.xxx,org.xxx.base.MainActivity)
UserWait(100)
DispatchPointer(10,10,0,160,2269,1,1,-1,1,1,0,0)
DispatchPointer(10,10,1,160,2269,1,1,-1,1,1,0,0)
UserWait(100)
DispatchPointer(10,10,0,635,404,1,1,-1,1,1,0,0)
DispatchPointer(10,10,1,635,404,1,1,-1,1,1,0,0)
UserWait(1000)
DispatchPointer(10,10,0,510,2252,1,1,-1,1,1,0,0)
DispatchPointer(10,10,1,510,2252,1,1,-1,1,1,0,0)
UserWait(1000)
#發送信息
DispatchString(Idonotwhattodo)
UserWait(1000)
DispatchPointer(10,10,0,973,1438,1,1,-1,1,1,0,0)
DispatchPointer(10,10,1,973,1438,1,1,-1,1,1,0,0)
UserWait(10)
DispatchPointer(10,10,0,75,184,1,1,-1,1,1,0,0)
DispatchPointer(10,10,1,75,184,1,1,-1,1,1,0,0)
注意:
(1)保存文件,示例保存爲send.script文件,後綴不做限制,可以txt
(2)可以#後加中文註釋
具體執行10次:
adb shell monkey -f /sdcard/send.script 10

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章