Monkey脚本API简介
API:全称Application Programming Interface,即应用程序编程接口.
API是一些预先定义函数,目的是用来提供应用程序与开发人员基于某软件或者某硬件得以访问一组例程的能力,并且无需访问源码或无需理解内部工作机制细节。
API就是操作系统给应用程序的调用接口,应用程序通过调用操作系统的 API而使操作系统去执行应用程序的命令(动作)。在 Windows 中,系统API是以函数调用的方式提供的。
SDA和API
可以认为API是包含在SDK中的:SDK是一系列文件的组合,包括lib、dll、.h、文档、示例等;API是对程序而言的,提供用户编程时的接口,即一系列模块化的类和函数。
API与GUI
两者都属于直接用户接口,不同的是API接口属于一种操作系统或程序接口,但是GUI接口属于一种图形操作系统。
API分类
1.Windows API:Windows application programming interface(WIndows应用程序接口)
Windows安装完,系统就有了一套简单的SDK,包含了一套完整的基础Windows API, 如果安装VC或下载新的SDK后,就可以使用更加丰富的Windows API了。
凡是在 Windows工作环境底下执行的应用程序,都可以调用Windows API。
2.linux API:linux application programming interface(linux应用程序接口)。在linux中,用户编程接口API遵循了UNIX中最流行的应用编程界面标准——POSIX标准。
Monkey脚本API常见命令
LaunchActivity(pkg_name, cl_name) 启动应用的Activity。参数:包名和启动的Activity
Tap(x, y, tapDuration) 模拟一次手指单击事件
参数:x,y为控件坐标,tapDuration为点击的持续时间(可省略)。
UserWait(sleepTime) 休眠一段时间
RotateScreen(rotationDegree, persist) 旋转屏幕
参数:rotationDegree为旋转角度。
1代表90度
persist表示旋转之后是否固定
0表示旋转后恢复,非0则表示固定不变
DispatchString(input) 输入字符串
DispatchFlip(true/false) 打开或者关闭软键盘
PressAndHold(x, y, pressDuration) 模拟长按事件
Drag(xStart, yStart, xEnd, yEnd, stepCount) 用于模拟一个拖拽操作
PinchZoom(x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End, stepCount) 模拟缩放手势
LongPress() 长按2秒
DeviceWakeUp() 唤醒屏幕
PowerLog(power_log_type, test_case_status) 模拟电池电量信息
WriteLog() 将电池信息写入SD卡
RunCmd(cmd) 运行shell命令
DispatchPointer(downtime,eventTime,action,x,y,pressure,size,metastate,xPrecision,yPrecision,device,edgeFlags) 向指定位置,发送单个手势
ProfileWait() 等待5秒
StartCaptureFramerate() 获取帧率
EndCaptureFramerate(input) 结束获取帧率
Monkey脚本格式
Monkey脚本主要包含两部分,一部分是头文件信息,一部分是具体的monkey命令。
type = raw events
count = 1
speed = 1.0
//下面为monkey命令
start data >>
具体的monkey脚本内容
注意:头文件代码书写注意“=”两边预留空格,否则会出现如下报错。
java.lang.NumberFormatException: Invalid int: ""
编写脚本(综合实例)
执行脚本
脚本编写完成后,传到手机设备上,然后执行。
adb push C:\Users\Administrator\Desktop\gallery3.txt data/local/tmp
adb shell
monkey -f data/local/tmp/gallery3.txt -v 1
执行结果
日志管理
Monkey日志管理是Monkey测试中非常重要的一个环节,通过日志管理分析,可以获取当前测试对象在测试过程中是否会发生异常,以及发生的概率,同时还可以获取对应的错误信息,帮助开发定位和解决问题。
monkey日志保存方法
1、保存在PC中
>adb shell monkey [option] <count> >d:\monkey.txt
eg:C:\Users\Administrator>adb shell monkey -v -v 100 >d:\monkeylog.txt
2、保存在手机上
>adb shell
>monkey -v 100 >data/local/tmp/monkeylog.txt
例:将日志导出并保存到D盘根目录
C:\Users\Administrator>adb pull /data/local/tmp/monkeylog.txt D:\
3、标准流和错误流分开保存
Monkey [option] <count> 1>/sdcard/monkey.txt 2>/sdcard/error.txt
例子:C:\Users\Administrator>adb shell monkey -v 100 1>d:\monkey.log 2>d:\error.log
执行以上命令,Monkey的运行日志和异常日志将被分开保存。Monkey的运行日志将被保存在monkey.txt文件中,而异常日志将被保存在D盘下的error.txt中。
4、常用三种monkey日志保存写法
1、monkey -s 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --throttle 500 -v -v -v 99999999 > data/local/tmp/monkeylog.txt 2>data/local/tmp/monkeylog_error.txt (这里将日志保存在手机/data/local/tmp路径里,标准输出(正常)日志文件名称为monkeylog.txt,错误输出(有问题的情况,包括crash和ANR信息等)日志文件名称为:monkey_error.txt)
2、monkey -s 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --throttle 500 -v -v -v 99999999 > data/local/tmp/monkeylog.txt 2>&1 (这里将标准跟错误日志都保存在一个文件monkeylog.txt里,日志里搜索关键词crash跟anr即可找到对应错误点)
3、monkey -s 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --throttle 500 -v -v -v 99999999 &> data/local/tmp/monkeylog.txt(同方法2)