monkeyrunner是android-sdk-windows中自带的工具之一,提供了多个API,通过MonkeyRunner的API可以编写Python脚本程序来模拟控制Android手机设备上的app应用。
*********************************************************************************************************************
MonkeyRunner工具是使用Jython写出来的。Jython是一种完整的语言,是Python语言在Java中的完全实现。 使用MonkeyRunner可以做Android应用的自动化测试。用户可以写出一个Python程序,通过monkeyrunner去安装一个Android应用程序安装包,并运行它,向它发送模拟击键,截取它的用户界面图片,并将截图保存,所以monkeyrunner工具的主要目的是用于测试功能、框架水平上的应用程序和设备,或用于运行单元测试套件,也可以将其用于其它目的。使用monkeyrunner.bat可执行monkey脚本。
Monkeyrunner的特性: 多设备控制:monkeyrunner API可以跨多个设备或模拟器实施测试套件。可以在同一时间接上所有的设备,一次启动全部模拟器,或依据程序依次连接到每一个,然后运行一个或多个测试。也可以用程序启动一个配置好的模拟器,运行一个或多个测试,然后关闭模拟器。 功能测试:monkeyrunner可以为一个应用做自动化功能测试。它模拟按键或触摸事件的输入数值,然后观察输出结果的截屏。 回归测试:monkeyrunner可以运行某个应用,并将其结果截屏与既定已知正确的结果截屏相比较,以此测试应用的稳定性。 可扩展的自动化:由于monkeyrunner是一个API工具包,可以基于Python模块和程序开发一整套系统,以此来控制Android设备。除了使用monkeyrunner API之外,还可以使用标准的Python os和subprocess模块来调用如adb这样的Android工具。
Monkeyrunner API主要包括三个模块:MonkeyRunner、MonkeyDevice、MonkeyImage 1、MonkeyRunner:这个类提供了用于连接monkeyrunner和设备或模拟器的方法waitForConnection,常用的还有sleep的方法、用于创建用户界面显示方法等。 2、MonkeyDevice:代表一个设备或模拟器。这个类为安装和卸载包、开启Activity、发送按键和触摸事件、运行测试包等提供了方法。 3、MonkeyImage:这个类提供了捕捉屏幕的方法。这个类为截图、将位图转换成各种格式、对比两个MonkeyImage对象、将image保存到文件等提供了方法。
===Monkeyrunner使用示例=== (1)在..\tool下,先用文本编辑器新建.py文件(monkey_recorder.py),内容如下:
--导入monkeyrunner所要使用的模块 from com.android.monkeyrunner import MonkeyRunner as mr from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder --让Monkeyrunner连接上模拟器 device = mr.waitForConnection()
--启动工具 recorder.start(device)
再启动已创建好的AVD_exam1虚拟机,并解锁; 注意:在运行monkeyrunner之前必须先运行相应的模拟器或连接真机,否则monkeyrunner无法连接到设备
(2)在CMD命令窗口直接运行monkeyrunner,启动MonkeyRecorder 录制脚本 monkeyrunner monkey_recorder.py
(3)录制脚本(例如 用户注册),并导出 在monkey_recorder的界面上,完成以下操作。(不能在模拟器上操作,否则录制不到脚本) 1.点击主键,进入app桌面(如我们练习用的订票app); 2.点击浦软订票app,启动app;在app首页上点击“注册”按钮,进入用户注册页面; 3.点击账号编辑框,输入注册账号,如:18912345678 4.点击密码编辑框,输入密码,如:123456 5.点击姓名编辑框,输入姓名,如:tony 6.点击身份证编辑框,输入18位身份证号码,如:123456789012345678 7.点击“确定”按钮 8.弹出注册成功消息,跳转到用户登录页面 9.点击导出按钮(Export Actions),将脚本文件导出保存到工作目录下,文件类型为(.mr),如:"D:\andorid_test\test\test001.mr" 10.点击monkeyrunner窗体右上角的关闭按钮,安全的退出monkeyrunner
注意: a)、注册时,使用11位账号/6位密码,例如:18930011111 / 123456 b)、以上每步操作后,可以点击Wait按钮,添加等待时间,如2秒
*********************************
MonkeyRecorder按钮说明:
wait: 用来插入下一次操作的时间间隔,点击后即可设置时间,单位是秒 Press a Button:用来确定需要点击的按钮,包括menu、home、search,以及对按钮的press、down、up属性 Type Something:用来输入内容到输入框 Fling:用来进行拖动操作,可以向上、下、左、右,以及操作的范围 Export Actions:用来导出脚本,不需要后缀名,也可以添加后缀名.mr Refresh Display:用来刷新手机界面,估计只有在断开手机后,重新连接时才会用到
*************************************
(4)编辑修改脚本(如果需要) 1.使用文本编辑器打开导出的(.mr)脚本文件 2.删除录制时操作多余或重复的脚本; 3.修改录制错误的脚本; 4.添加、优化脚本;如,在每步操作后,添加等待时间,如2秒 5.保存脚本文件
(5)在CMD命令窗口直接运行monkeyrunner,启动monkey_playback.py,回放脚本,如: monkeyrunner monkey_playback.py "D:\andorid_test\test\test001.mr"
********************************************************************************************************************* 注意事项: (1)在录制脚本的时候,只能启动一台虚拟机,否则会出错。 (2)录制脚本的时候,只能在monkeyrunner中进行操作,才能把动作录下来(在虚拟机中操作的话,monkeyrunner不会记录该动作)。 (3)一定要等到monkeyrunner和模拟器的画面同步以后,再进行下一个动作;如果较长时间以后仍然没有同步(3秒以上),可以点击monkeyrunner上的刷新按钮,强制进行同步。 (4)在录制时尽量使用鼠标单击,每次单击后,注意查看是否有代码生成,如果没有,说明没有录成功,可以再次单击;如果录下了垃圾,例如多次点击了鼠标,将会录下重复的代码,可以在修改代码的时候删除掉。 (5)录制脚本时,建议录制一个等待的时间函数。 (6)导出文件时,注意要使用带扩展名(.mr)的文件名。 (7)录制完毕后,先关闭monkeyrunner,再回放脚本。注意:要点击monkeyrunner窗体右上角的关闭按钮,安全的退出(不要直接在命令行退出或则关闭命令行,否者会导致monkeyrunner和模拟器断开连接,无法回放脚本。出现这种情况时,之后关掉模拟器,重新启动模拟器。) (8)修改脚本的时候,每条命令之间都要插入等待命令(如果有录制的重复命令,删掉一条) (9)在回放脚本之前,需要确保模拟器和录制开始时所处的画面一致,否者会导致回放不成功。 *********************************************************************************************************************
|