第三部分(脚本)
MonkeyScript
1. 执行monkey 脚本的命令:
adb shell monkey -f < scriptfile > < event -count >
(1)轨迹球事件
DispatchTrackball 命令: DispatchTrackball(long downtime,long eventide,int action, float x,float y, float pressure, float size, int metastate, float xprecision, float yprecision, int device, int edgeflags)
action 0 代表 按下, 1 代表 弹起, x 和 y 带表的坐标点
(2)点击事件
DispatchPointer(long downtime,long eventide,int action, float x,float y, float pressure, float size, int metastate, float xprecision, float yprecision, int device, int edgeflags)
action 0 代表按下, 1 代表弹起, x 和 y 代表的坐标点
(3)输入字符串的事件
DispatchString (String text)
(4)启动应用
LauchActivity(package,Activity)
(5)等待事件
UserWait(millonseconds)
(6) 按下键值
DispatchPress(int keycode) #keycode 66 回车键
事例:在搜索框中输入查询词 重复2次
adb shell monkey -f monkey.script
#实现在搜索框 搜索关键词#1. 启动app#2. 点击输入框#3. 输入查询词#4. 点击键盘上的回车#5. 点击搜索按钮#6. 等待结果的出现type = usercount = 10speed = 1.0start data >>LaunchActivity(com.example.zhangjian.minibrowser2, com.example.zhangjian.minibrowsers.MainActivity)UserWait(2000)# 点击坐标(100,100) 0 代表按下DispatchPointer(10,10,0,100,100,1,1,-1,1,1,0,0) # 点击坐标(100,100) 1 代表弹起 DispatchPointer(10,10,1,100,100,1,1,-1,1,1,0,0)#输入框 输入 testDispatchString(test)UserWait(1000)# 点击回车的keycode 值为66DispatchPress(66)UserWait(1000)# 点击搜索按钮DispatchPointer(10,10,0,400,100,1,1,-1,1,1,0,0)DispatchPointer(10,10,1,400,100,1,1,-1,1,1,0,0)# 等待6秒UserWait(6000)
注意:若app 不能被launch起来,检查 manifest.xml这句 : < activity android:name = ".MainActivity" android:exported= "true" > 允许被外部调起
Monkey Runner
1. MonkeyRunner API - alert
void alert (string message,striing title, striing okTitle)
1 #!python2 #_*_UTF-8_*_3 from com.android.monkeyrunner import MonkeyRunner4 MonkeyRunner.alert("Hello mook frends", "This is title","OK")5 6 # 执行方式7 #monkeyrunner demo.py
2. MonkeyRunner API - waitForConnection
waitForConnection(float timeout, string deviceid)
3. MonkeyDevice API - drag(拖动)
drag(tuple start, tuple end, float duration, integer steps)
start 起点位置
end 终点位置
duration 手势持续的时间
steps 插值点的步数,默认 10
4. MonkeyDevice API - press(按键)
press(string keycode,dictionary type)
keycode 名,Down、UP、DOWN_AND_UP
5. MonkeyDevice API - startActivity(启动应用)
startActivity(package/ activity)
6. MokeyDevice API - touch(点击)
touch(integer x,integer y, integer type)
x 坐标值, y坐标值
type: DOWN,UP,DOWN_AND_UP
7. MonkeyDevice API- takeSnapshot(截屏)
MonkeyDevice.takeSnapshot()
8.MonkeyImage API - sameAs
图像对比
boolean sameAs (MonkeyImage other, float percent )
9. MonkeyImage API - writeToFile(保存图像)
void writeToFIle(string path, string format)
实例:monkeyrunner mook.py
1 #实例 搜索 建军90年阅兵 2 #!python 3 #_*_UTF-8_*_ 4 from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage 5 #连接设备 6 device = MonkeyRunner.waitForConnection(3,"192.168.26.101:5555") 7 #启动app 8 device.startActivity("com.example.zhangjian.minibrowser2/com.example.zhangjian.minibrowser2.MainActivity") 9 MonkeyRunner.sleep(2)10 #点击搜索框11 device.touch(100,100,"DOWN_AND_UP")12 MonkeyRunner.sleep(1)13 #输入查询词14 device.type("建军90年阅兵")15 MonkeyRunner.sleep(1)16 #点击回车键17 device.press("KEYCODE_ENTER","DOWN_AND_UP")18 MonkeyRunner.sleep(1)19 #点击搜索框20 device.touch(400,100,"DOWN_AND_UP")21 MonkeyRunner.sleep(6)22 #截屏23 image = device.takeSnapshot()24 image.writeToFile('./test.png','png')25 #点击清除按钮26 device.touch (300,100,"DOWN_AND_UP")27 MonkeyRunner.sleep(3)