monkeyScript

monkey爲向系統發送僞隨機事件流,不能控制操作,monkeyscript爲monkey腳本編寫,完成一系列固定的操作。基於座標點進行操作,包括點擊,輸入,長按,滑動等操作。

(1)啓動
當前測試的時候利用EditPlus編寫腳本,或者記事本編寫也可以,MS(monkeyscript)腳本文件格式沒有限制,可用txt,或者其他格式,當前用的是沒有後綴。

啓動時通過monkey命令啓動:
adb shell monkey -v -v -v -f /mnt/sdcard/makeFriend 5
其中:-f後面爲腳本所在的文件路徑以及腳本名,10爲腳本執行的次數爲5次(注意一定要寫上執行次數,不然腳本不會成功),腳本路徑/mnt/sdcard/makeFriend爲通過adb命令導入路徑中的

(2)腳本編寫:
# Start Script
type=user
count=10
speed=1.0
start data >>
#啓動應用程序,兩個參數分別爲包名和Activity名
LaunchActivity(com.cwtcn.kt.friend,com.cwtcn.kt.friend.MainMenuActivity)
#等待事件,等待2秒鐘
UserWait(2000)
#點擊事件,點擊遠程交友按鈕
captureDispatchPointer(10,10,0,121,85,1,1,-1,1,1,0,0)
captureDispatchPointer(10,10,1,121,85,1,1,-1,1,1,0,0)
#等待事件,等待3秒鐘
UserWait(3000)
#點擊事件,點擊輸入手機號或者imei號的輸入框
captureDispatchPointer(10,10,0,96,85,1,1,-1,1,1,0,0)
captureDispatchPointer(10,10,1,64,85,1,1,-1,1,1,0,0)
#輸入字符串事件,輸入手機號15889768225
captureDispatchString(15889768225)
#點擊enter回車
captureDispatchPress(66)
#等待事件,等待2秒鐘
UserWait(2000)
#點擊事件,點擊搜索按鈕
captureDispatchPointer(10,10,0,118,174,1,1,-1,1,1,0,0)
captureDispatchPointer(10,10,1,118,174,1,1,-1,1,1,0,0)
上面腳本爲交友腳本,通過點擊遠程交友,輸入手機號,點擊搜索按鈕

(3)腳本相關api
上述腳本第一行到第五行,都爲固定腳本,照抄就好
LaunchActivity(String pack_name,String cl_name)爲啓動應用程序,參數分別爲包名和當前界面的Activity名。
獲取當前界面包名和Activity名的方法:adb shell "dumpsys window | grep mCurrentFocus"

captureDispatchPointer(10,10,0,121,85,1,1,-1,1,1,0,0)
captureDispatchPointer(10,10,1,121,85,1,1,-1,1,1,0,0)
該腳本爲點擊事件,代表按下和彈起事件,一般配套使用,其中第三列參數的0代表爲按下,1位彈起,121,85爲點擊的座標位置,座標位置用uiautomator viewer工具查看,其他參數默認

(4)常用Api介紹:
1、點擊事件:DispatchPointer ( downTime , eventTime , action , x , y , pressure , size , metaState , xPrecision , yPrecision , device , edgeFlags)
用於向一個指定的座標位置,發送單個手勢消息,一般用它來模擬點擊的操作。
  • action :事件是按下還是擡起,0 表示按下,1 表示擡起。
  • x、y:表示當前事件觸發的X軸和Y軸的座標。
也就是說,兩個 DispatchPointer 命令加在一起,分別表示 按下 和 擡起 ,這表示一次點擊操作

2、按鍵消息(DispatchKey)
DispatchKey 主要是用於發送一些 Android 標準的 EventKey 按鍵消息。但是需要寫對應的值。

3、啓動應用
LaunchActivity(String pack_name,String cl_name)爲啓動應用程序,參數分別爲包名和當前界面的Activity名。

4、模擬按鍵點擊Tap(x,y,tapDuration)
模擬一次手指單擊事件,x,y分別爲座標值,tapDuration爲按下的時長

5、打開或關閉軟鍵盤DispatchFlip(true/false)

6、長按兩秒:LongPress()

7、喚醒屏幕:DeviceWakeUp()

8、模擬拖動事件:Drag(xStart,yStart,xEnd,yEnd)

9、輸入字符串:DispatchString(input)

參考下面兩篇博客






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