前言

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

声明

  本文档转载并整理自译言: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

monkeyrunnerAPI于com.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 <plugin_jar>

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

<program_filename>

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

<program_options>

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

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

您可以用以下命令来生成monkeyrunner的API参考:

参数说明:

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

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

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

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

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

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

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

插件启动类(The plugin startup class)

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

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

   

Android开发者指南(5) —— monkeyrunner相关推荐

  1. Android开发者指南24难点各个击破—来自androi中文翻译组

    声明 欢迎转载,但请保留文章原始出处               安卓航班开发:http://www.apkway.com/forum.php 博客园:http://www.cnblogs.com/ ...

  2. Android开发者指南(22) —— Accessing Resources

    前言 本章内容为Android开发者指南的Framework Topics/Application Resources/Accessing Resources章节,译为"资源调用" ...

  3. Android开发者指南(29) —— USB Host and Accessory

    前言 本章内容为Android开发者指南的 USB章节,译为"USB主从设备",版本为Android 4.0 r1,翻译来自:"太阳火神的美丽人生",欢迎访问他 ...

  4. Android开发者指南(25) —— Resource Types - Style

    样式资源 样式资源定义了用户界面(UI)的格式和外观.样式能被应用到单独的View (通过置入layout 文件),或者整个Activity及应用程序(通过置入manifest文件). 关于创建及应用 ...

  5. Android开发者指南

    SDK Android开发者指南-- With AVD Manager 前言 本章内容为开发者指南(Dev Guide)/Developing/Managing Virtual Devices/Wit ...

  6. Android开发者指南(1) —— Android Debug Bridge(adb)

    Android Debug Bridge Android调试桥接器,简称adb,是用于管理模拟器或真机状态的万能工具,采用了客户端-服务器模型,包括三个部分: * 客户端部分,运行在开发用的电脑上,可 ...

  7. Android开发者指南(18) —— Web Apps Overview

    前言 本章内容为开发者指南(Dev Guide)/Web Applications/Web Apps Overview,版本为Android 3.2 r1,翻译来自:"happyjiahan ...

  8. Android开发者指南(4) —— Application Fundamentals

    前言 本章内容为开发者指南(Dev Guide)/Framework Topics/Application Fundamentals,版本为Android2.3 r1,翻译转载并整理自译言:" ...

  9. Android开发者指南(12) —— Android Supported Media Formats

    前言 本章内容为开发者指南(Dev Guide)/Appendix/Android Supported Media Formats,版本为Android3.1 r1,翻译来自:"jackey ...

最新文章

  1. 空间平滑滤波器(上)
  2. 全志A33-gpio驱动程序
  3. 从RAID看垂直伸缩到水平伸缩的演化
  4. mysql数据迁移neo4j_neo4j数据库迁移---------Neo4j数据库导入导出的方法
  5. 三位数倒序数C语言,C语言求助!一个三位数的逆序数,总是编不对
  6. linux下rocksdb的编译安装
  7. 效率低下的原因--开发者说
  8. C ++ Singleton设计模式
  9. python输出偶数_Python习题册028:输出列表中的偶数
  10. django在window和linux,从windows导入Django项目到linux时出错
  11. PTA : 函数题 7-3 两个有序链表序列的交集 (20 分)
  12. 得到页面中的所有链接函数
  13. csdn资源下载不了问题解决 360浏览器下载不了csdn资源问题解决
  14. 一个高考落榜生的奋斗历程
  15. Flutter踩坑之flutter doctor --android-licenses报错
  16. 提高组CSP-S初赛模拟试题整理
  17. 01-名词冠词(思维导图记录)
  18. 分布式对象和远程调用
  19. 关于LTE终端的所谓的五模、七模、十频、十一频
  20. 准备入手iPhone 4港版的必看!港行无锁版iPhone 4购买全攻略

热门文章

  1. 小鹏汽车招股书,满是智能技术自研的标签
  2. Nature:最强癌基因找到了,居然不在染色体上 | 华人领衔最新研究
  3. 华为鸿蒙OS发布!余承东:随时可替换安卓;方舟编译器将支持混合编译
  4. 到底什么样的程序员能称为架构师?
  5. 运维日常:群发邮件营销平台--EDM
  6. Web模板引擎—Mustache
  7. Linux下添加新硬盘,分区及挂载
  8. 两种 js下载文件的方法(转)
  9. Charpter5 软件测试总结
  10. 烂泥:学习Nagios(三): NRPE安装及配置