MonkeyRunner:
monkeyrunner 工具提供了一个 API,使用此 API 写出的程序可以在 Android 代码之外
控制 Android 设备和模拟器。通过 monkeyrunner,您可以写出一个 Python 程序去安装一
个 Android 应用程序或测试包,运行它,向它发送模拟击键,截取它的用户界面图片,并
将截图存储于工作站上。 monkeyrunner 工具的主要设计目的是用于测试功能 / 框架水平上
的应用程序和设备,或用于运行单元测试套件,但您当然也可以将其用于其它目的。
monkeyrunner 工具与用户界面 / 应用程序测试工具,也称为 monkey工具并无关联。 m
onkey 工具直接运行在设备或模拟器的 adbshell 中,生成用户或系统的伪随机事件流。 而
monkeyrunner 工具则是在工作站上通过 API 定义的特定命令和事件控制设备或模拟器。
1、MonkeyRunner的特性
1) 多设备控制: monkeyrunner API 可以跨多个设备或模拟器实施测试套件。您可以在同
一时间接上所有的设备或一次启动全部模拟器 (或统统一起),依据程序依次连接到每
一个,然后运行一个或多个测试。您也可以用程序启动一个配置好的模拟器,运行一
个或多个测试,然后关闭模拟器。
2) 功能测试: monkeyrunner 可以为一个应用自动贯彻一次功能测试。您提供按键或触摸
事件的输入数值,然后观察输出结果的截屏。
3) 回归测试: monkeyrunner 可以运行某个应用,并将其结果截屏与既定已知正确的结果
截屏相比较,以此测试应用的稳定性。
4) 可扩展的自动化:由于 monkeyrunner 是一个 API 工具包,您可以基于 Python 模块和
程序开发一整套系统,以此来控制 Android 设备。除了使用 monkeyrunner API 之
外,您还可以使用标准的 Python os 和 subprocess 模块来调用如 adb 这样的 Android
工具。
您还可以向 monkeyrunner API 中添加您自己的类。我们将在使用插件扩展 monkeyrun
ner 一节中对此进行详细讨论。
2、一个简单的 monkeyrunner 程序实例
以下为一个简单的 monkeyrunner 程序,它将会连接到一个设备,创建一个 MonkeyDev
ice 对象。使用 MonkeyDevice 对象,程序将安装一个 Android 应用包,运行其中一个活动,
并向其发送按键事件。程序接下来会将结果截图,创建一个 MonkeyImage对象,并使用这
个对象截图将保存至 .png 文件。
# 导入此程序所需的 monkeyrunner 模块
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
# 连接当前设备,返回一个 MonkeyDevice 对象
device = MonkeyRunner.waitForConnection()
# 安装 Android 包,注意,此方法返回的返回值为 boolean ,由此您可以判断安装过程是否正常
device.installPackage( 'myproject/bin/MyApplication.apk' )
# 运行此应用中的一个活动 device.startActivity(component='com.android.settings/.Settings')