前言

  本章内容为开发者指南(Dev Guide)/Developing/Tools/monkeyrunner,版本为Android2.3 r1,翻译转载并整理自译言:"biAji",原文地址:"http://article.yeeyan.org/view/37503/164523",再次感谢"bjAji" !期待你一起参与翻译Android的相关资料,联系我[email protected]。
 

 

声明

  本文档转载并整理自译言:Monkeyrunner 使用说明

  Android中文翻译组:http://goo.gl/6vJQl
 

 

原文
 

  http://developer.android.com/guide/developing/tools/monkeyrunner_concepts.html

正文

monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。通过monkeyrunner,您可以写出一个Python程序去安装一个Android应用程序或测试包,运行它,向它发送模拟击键,截取它的用户界面图片,并将截图存储于工作站上。monkeyrunner工具的主要设计目的是用于测试功能/框架水平上的应用程序和设备,或用于运行单元测试套件,但您当然也可以将其用于其它目的。

monkeyrunner工具与(UI/Application Exerciser Monkey)户界面/应用程序测试工具,也称为monkey工具并无关联。monkey工具直接运行在设备或模拟器的adb shell中,生成用户或系统的伪随机事件流。而monkeyrunner工具则是在工作站上通过API定义的特定命令和事件控制设备或模拟器。

monkeyrunner工具为Android测试提供了以下特性:

* 多设备控制:monkeyrunner    API可以跨多个设备或模拟器实施测试套件。您可以在同一时间接上所有的设备或一次启动全部模拟器(或统统一起),依据程序依次连接到每一个,然后运行一个或多个测试。您也可以用程序启动一个配置好的模拟器,运行一个或多个测试,然后关闭模拟器。

* 功能测试:    monkeyrunner可以为一个应用自动贯彻一次功能测试。您提供按键或触摸事件的输入数值,然后观察输出结果的截屏。

* 回归测试:monkeyrunner可以运行某个应用,并将其结果截屏与既定已知正确的结果截屏相比较,以此测试应用的稳定性。 

* 可扩展的自动化:由于monkeyrunner是一个API工具包,您可以基于Python模块和程序开发一整套系统,以此来控制Android设备。除了使用monkeyrunner    API之外,您还可以使用标准的Python    ossubprocess模块来调用如Android Debug Bridge这样的Android工具        

您还可以向monkeyrunner API中添加您自己的类。我们将在使用插件扩展monkeyrunner一节中对此进行详细讨论

         monkeyrunner工具使用Jython(使用Java编程语言的一种Python实现)。Jython允许monkeyrunnerAPI与Android框架轻松的进行交互。使用Jython,您可以使用Python语法来获取API中的常量、类以及方法。

 

一个简单的monkeyrunner程序实例(A Simple monkeyrunner Program)

         以下为一个简单的monkeyrunner程序,它将会连接到一个设备,创建一个MonkeyDevice对象。使用MonkeyDevice对象,程序将安装一个Android应用包,运行其中一个活动,并向其发送按键事件。程序接下来会将结果截图,创建一个MonkeyImage对象,并使用这个对象截图将保存至.png文件。

    
 

 

 

The monkeyrunner API

monkeyrunnerAPIcom.android.monkeyrunner包中包含三个模块:

* MonkeyRunner:一个为monkeyrunner程序提供工具方法的类。这个类提供了用于连接monkeyrunner至设备或模拟器的方法。它还提供了用于创建一个monkeyrunner程序的用户界面以及显示内置帮助的方法。 

MonkeyDevice:表示一个设备或模拟器。这个类提供了安装和卸载程序包、启动一个活动以及发送键盘或触摸事件到应用程序的方法。您也可以用这个类来运行测试包。  

* MonkeyImage:表示一个截图对象。这个类提供了截图、将位图转换成各种格式、比较两个MonkeyImage对象以及写图像到文件的方法。

python程序中,您将以Python模块的形式使用这些类。monkeyrunner工具不会自动导入这些模块。您必须使用类似如下的from语句:

  

 

其中,为您想要导入的类名。您可以在一个from语句中导入超过一个模块,其间以逗号分隔。

 

Running monkeyrunner

您可以直接使用一个代码文件运行monkeyrunner,抑或在交互式对话中输入monkeyrunner语句。不论使用哪种方式,您都需要调用SDK目录的tools子目录下的monkeyrunner命令。如果您提供一个文件名作为运行参数,则monkeyrunner将视文件内容为Python程序,并加以运行;否则,它将提供一个交互对话环境。

monkeyrunner命令的语法为:

  
 

 

1阐释了命令的标志和参数。

参数

说明

-plugin

 (可选)指定一个内含monkeyrunner插件的.jar文件。欲了解更多关于monkeyrunner插件的内容,请参照(Extending monkeyrunner with plugins)使用插件扩展monkeyrunner。要指定多个文件,包括多次论证。如欲指定超过一个文件,可以多次使用此参数。

如果您指定此参数,monkeyrunner将视文件内容为Python程序并予以执行。如果此参数未予指定,则开启一个交互式会话。

(可选)<程序文件名所指定的程序所需的参数

 

monkeyrunner内建帮助(monkeyrunner Built-in Help)

您可以用以下命令来生成monkeyrunnerAPI参考:

        

         参数说明:

* 可以为texthtml,分别代表纯文本和HTML输出。

* 指定了输出文件的全路经名称。

 

使用插件扩展monkeyrunner(Extending monkeyrunner with Plugins)

您可以用Java语言创建新的类,并打包成一个或多个.jar文件,以此来扩展monkeyrunnerAPI。您可以使用您自己写的类或者继承现有的类来扩展monkeyrunnerAPI。您还可以使用此功能来初始化monkeyrunner环境。

         为了使monkeyrunner加载一个插件,您应当如使用如1中所述的-plugin参数来调用monkeyrunner命令。

         在您编写的插件中,您可以导入或继承位于com.android.monkeyrunner包中的几个主要的monkeyrunner类:MonkeyDevice MonkeyImageMonkeyRunner(参见monkeyrunnerAPI )。

         请注意,插件无法让你访问AndroidSDK。您不能导入com.android.app等包。这是因为monkeyrunner是在框架API层次之下与设备或模拟器进行交互的。

 

插件启动类(The plugin startup class)

         用于插件的.jar文件可以指定一个类,使其在脚本执行之前就实例化。如欲指定这个类,您需要在.jar文件的manifest中添加键MonkeyRunnerStartupRunner。其值为启动时运行的类的名称。以下代码段显示了如何在一个ant构建脚本达到这样的目的:

        

如欲访问 monkeyrunner 的运行时环境,启动类可以实现 com.google.common.base.Predicate 。例如,用这个类在默认的命名空间中设置一些变量:

   

更多相关文章

  1. 创建android画笔程序的样例(有镜面效果)
  2. android 实用sax 读取xml文件内容 附源码
  3. android遍历sd卡中的所有文件
  4. Android 应用程序退出的四种方法
  5. Android 实现多个Audio文件的顺序播放
  6. 解决 Android 下载中文文件名问题

随机推荐

  1. Android实现选择本地音乐
  2. Android(安卓)stdio 3.0以上版本将图片文
  3. input 按键分发
  4. Android(安卓)Studio 将项目打成JAR包
  5. Android版本适配:9.0 Pie(API级别28)
  6. 日拱一卒(十七)
  7. Android(安卓)DeepLink
  8. Android基于HttpUrlConnection类的文件下
  9. android ::JNI WARNING illegal start by
  10. Android优化之内存优化