1、monkeyrunner是什么
monkeyrunner工具为写程序提供API,这些程序用于独立与安卓代码之外来控制安卓设备或者模拟器。使用monkeyrunner,你可以编写python程序,然后安装安卓应用或者测试包,运行它,向它发送按键,截取其UI的截图,并存储在工作站上。monkeyrunner工具当初用于测试程序或者功能、框架层面的运行测试集,当然你也可以随意用于其他目的。
monkeyrunner工具和monkey无关,但是还是被认为是monkey工具,monkey是直接运行在设备或者模拟器的adb shell,并随机产生用户或者系统事件。相比来说,monkeyrunner工具从工作站通过api向模拟器或者终端发送指定的命令或者事件。
2、能做什么和局限
* 多设备控制
其API可以向多个设备或者模拟器执行一个或者多个测试套。可以一次性绑定多个物理终端或者模拟器,彼此链接,然后运行测试集合。当然也可以使用程序启动模拟器的配置,运行测试,关掉模拟器。
*功能测试
可以针对安卓应用运行自动化测试,你只要输入按钮或者点击事件的属性值,然后通过截图查看结果。
*回归测试
可以稳定运行程序去测试应用,然后将输出的截图与已知的截图进行比对
*可扩展自动化
monkeyrunner是api工具包,你完全可以开发基于python的完整模块或者程序来控制安卓设备,除了利用monkeyrunner的api本身,也可以使用python标准库模块os和subprocess来调用安卓工具,比如adb。
也可以添加自己的类到monkeyrunner的api里。
monkeyrunner使用JPython。一直使用java编程语言的一种python实现,jpython使得monkeyrunner的api与安卓框架直接交互,通过jpython,你可以使用python语法来使用变量、类以及api的方法。
3、Monkeyrunner的api
*Monkeyrunner:monkeyrunner程序的方法类,提供了与设备或者模拟器连接的方法。同时提供了UI和显示内置帮助的方法。
*MonkeyDevice:代表设备或者模拟器,该类提供安装、卸载包,启动活动、向应用发送按键或者触摸时间。同时也可以使用这个类运行测试包。
*MonkeyImage:代表屏幕截图,该类提供抓取屏幕,从位图格式转化为其他多种格式,比对两个截图对象,并将图像写入到文件中。
备注:
在python程序中,你作为一个python模块访问每一个类,monkeyrunner没有自动导入这些模块,为了导入模块,需要使用python语句;
from com.android.monkeyrunner import <module>
4、运行monkeyrunner
运行monkeyrunner,又两种方式,1:通过文件运行 2、交互绘画中输入monkeyrunner语句
或者再sdk路径下的/tools文件夹李直接点击出发monkeyrunner命令;如果提供一个文件作为参数,monkeyrunner将把它作为python程序运行其内容;或者启动一个交互会话;
命令语法:
monkeyrunner -plugin <jar> <program_filename> <program_options>
参数说明:
-plugin <jar> 可选,为monkeyrunner指定一个包含插件的jar文件,指定多个jar文件,则多次使用该语句。
<program_filename>
如果提供了这个语句,monkeyrunner将其作为python程序运行其内容;无指定,则启动交互会话窗口;
<program_options>可选,者程序文件中的语句或者标志