Monkeyrunner的使用

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:33   1565   0

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)在回放脚本之前,需要确保模拟器和录制开始时所处的画面一致,否者会导致回放不成功。
*********************************************************************************************************************


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP