来源:慕课网http://www.imooc.com/learn/729
目录
- Monkey
- Monkey Script
- MonkeyRunner
注:以Android手机自带计算器举例
第一部分 Monkey
1. 什么是Monkey?
Android系统自带的一个工具,可发送用户伪随机事件
2. Monkey在哪里?
Android手机系统中,具体位置: /system/farmework/
$adb shell //进入手机
$cd /system/framework //进入此目录
$ls //查看monkey.jar
3.举例
使用monkey命令,测试手机上的计算器
步骤1: 获取被测应用包名
$adb logcat | grep START
打开手机上计算器,查找最后一行cmp=com.android.calculator2/.Calculator
步骤2:输入monkey命令
$adb shell monkey -p com.android.calculator2 --throttle 1000 --pct-touch 100 10
–throttle 事件之间的间隔,毫秒为单位
–pct-touch 100 touch事件占100%
还有其他许多参数,请自行搜索
第二部分 Monkey Script
1. 什么是Monkey Script?
以脚本的方式,运行monkey命令,可以按照用户意愿执行操作。
2. 实践
使用monkey,点击计算器7 + 8
步骤1: 新建脚本文件monkey.script,内容如下
type=user
count=10
speed=1.0
start data >>
//启动计算器
LaunchActivity(com.android.calculator2,com.android.calculator2/.Calculator)
UserWait(2000)
//点击右上角 ...
DispatchPointer(10, 10, 0, 1000, 400, 1, 1, -1, 1, 1, 0, 0)
DispatchPointer(10, 10, 1, 1000, 400, 1, 1, -1, 1, 1, 0, 0)
UserWait(2000)
//清除记录
DispatchPointer(10, 10, 0, 800, 500, 1, 1, -1, 1, 1, 0, 0)
DispatchPointer(10, 10, 1, 800, 500, 1, 1, -1, 1, 1, 0, 0)
UserWait(2000)
//点击 7
DispatchPointer(10, 10, 0, 200, 700, 1, 1, -1, 1, 1, 0, 0)
DispatchPointer(10, 10, 1, 200, 700, 1, 1, -1, 1, 1, 0, 0)
UserWait(2000)
//点击 +
DispatchPointer(10, 10, 0, 1000, 1500, 1, 1, -1, 1, 1, 0, 0)
DispatchPointer(10, 10, 1, 1000, 1500, 1, 1, -1, 1, 1, 0, 0)
UserWait(2000)
//点击 8
DispatchPointer(10, 10, 0, 400, 700, 1, 1, -1, 1, 1, 0, 0)
DispatchPointer(10, 10, 1, 400, 700, 1, 1, -1, 1, 1, 0, 0)
UserWait(2000)
步骤2: 将上面的monkey.script文件push到手机系统的data/local/tmp目录下
步骤3: 执行脚本
第1种方法,在电脑命令行执行脚本
$adb shell monkey -f /data/local/tmp/monkey.script 2
第2种方法,进入手机系统执行脚本
adb shell
cd /data/local/tmp
monkey monkey.script 2
其中,数字2是执行脚本的次数
比较:Monkey工具,只能随机输入事件
Monkey Script,可以按照人的行为去执行相应操作,并完成重复的操作,但不能截图
第三部分 Monkey Runner
1) 可弥补monkey script的不能截图缺点
2) 与设备无关
举例:mooc.py
#!/usr/bin/python
#-*- UTF-8 -*-
from com.android.monkeyrunner import MonkeyRunner
MonkeyRunner.alert('Hello mook friends','This is tittle','OK')
命令行运行:monkeyrunner mooc.py
运行结果:屏幕上弹出对话框
#!/usr/bin/python
#-*- UTF-8 -*-
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage
#连接设备
device = MonkeyRunner.waitForConnection(3,"018e212d20c9787e")
#启动app
device.startActivity("com.android.calculator2/.Calculator")
MonkeyRunner.sleep(2)
#click ...
device.touch(1000,400,"DOWN_AND_UP")
MonkeyRunner.sleep(1)
#click clear
device.touch(800,500,"DOWN_AND_UP")
MonkeyRunner.sleep(1)
#click 7
device.touch(200,700,"DOWN_AND_UP")
MonkeyRunner.sleep(1)
#click +
device.touch(1000,1500,"DOWN_AND_UP")
MonkeyRunner.sleep(1)
#click 8
device.touch(400,700,"DOWN_AND_UP")
image = device.takeSnapshot()
image.writeToFile('./test.png','png')