`
feya2008
  • 浏览: 1490 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Monkeyrunner 使用说明

阅读更多
http://article.yeeyan.org/view/37503/164523 
monkeyrunner
   
       
本文档中包含
       

   1.

      一个简单的monkeyrunner示例程序
   2.

      monkeyrunner API简介
   3.

      运行monkeyrunner
   4.

      monkeyrunner内建帮助
   5.

      使用插件扩展monkeyrunner

参见

   1.

       测试基础

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

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

 

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

    *

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

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

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

      可扩展的自动化:由于monkeyrunner是一个API工具包,您可以基于Python模块和程序开发一整套系统,以此来控制Android设备。除了使用monkeyrunner    API之外,您还可以使用标准的Python    os和subprocess模块来调用如adb这样的Android工具    。   
      您还可以向monkeyrunner API中添加您自己的类。我们将在使用插件扩展monkeyrunner一节中对此进行详细讨论 。

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

以下为一个简单的monkeyrunner程序,它将会连接到一个设备,创建一个MonkeyDevice对象。使用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.example.android.myapplication.MainActivity')
# 按下菜单按键
device.press('KEYCODE_MENU','DOWN_AND_UP')
# 截取屏幕截图
result = device.takeSnapShot
# 将截图保存至文件
result.writeToFile('myproject/shot1.png','png')
Themonkeyrunner API

monkeyrunnerAPI于com.android.monkeyrunner包中包含三个模块:

    *

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

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

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

 

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

  fromcom.android.monkeyrunner import

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

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

monkeyrunner命令的语法为:

monkeyrunner -plugin  <程序文件名> <程序选项>

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

表1.monkeyrunner标志和参数。
                                                                                               
           

参数
                    

说明
       
           

-plugin

                    

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

<程序文件名>

                    

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

<程序选项>

                    

(可选)<程序文件名>            所指定的程序所需的参数
       
monkeyrunner内建帮助

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

monkeyrunner  help.py

参数说明:

    *

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

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

使用插件扩展monkeyrunner

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

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

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

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

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

               

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

package com.android.example;

import com.google.common.base.Predicate;
import org.python.util.PythonInterpreter;

public class Main implements Predicate {
     @Override
     public boolean apply(PythonInterpreter anInterpreter) {

         /*
         * Examples of creating and initializing variables in the monkeyrunner environment's
         * namespace. During execution, the monkeyrunner program can refer to the variables "newtest"
         * and "use_emulator"
         *
         */
         anInterpreter.set("newtest", "enabled");
         anInterpreter.set("use_emulator", 1);

         return true;
     }
}
分享到:
评论
1 楼 mikite 2011-09-06  
好多跟你这篇一样的文章呢。。。

相关推荐

    MonkeyRunner API使用说明

    MonkeyRunner是一个强大的自动化测试工具,它允许测试人员通过编写Python脚本来控制...通过上述知识点的详细说明,测试人员可以更好地理解和应用MonkeyRunner工具进行自动化测试,实现对Android应用程序的高效测试。

    MonkeyRunner的java实现

    下面我们将深入探讨MonkeyRunner的使用和实现,以及如何通过Java代码进行控制。 首先,MonkeyRunner的核心是`MonkeyDevice`类,这个类提供了多种方法来模拟用户交互,例如`touch`用于模拟触摸屏操作,`type`用于...

    monkeyrunner学习资料

    最后,"Monkey_runner使用说明.docx"可能是一个详细的用户指南,包含了MonkeyRunner的高级功能和技巧,如使用条件语句、循环结构来构造复杂的测试逻辑,或者利用日志记录测试过程,以便分析和调试。此外,它可能还会...

    android自动化测试monkeyrunner学习

    #### 三、MonkeyRunner的具体使用示例 1. **按键操作**: - **函数原型**:`device.press(keyCode, action)` - **参数说明**: - `keyCode`:按键的键码,例如`'KEYCODE_BACK'`表示返回键。 - `action`:按键的...

    Monkey和Monkeyrunner自动化测试学习资料汇总

    8. [Monkeyrunner API帮助文档](http://wenku.baidu.com/view/f532773c87c24028915fc3bb.html) - 提供Monkeyrunner API的详细说明,方便开发者编程。 9. [Android基础知识]...

    MonkeyRunner文档

    MonkeyRunner详细说明文档文档,源码路径:https://android.googlesource.com/platform/sdk/+/6db5720/monkeyrunner/,或本人另一个资源中下载

    Ubuntu下, Eclipse中Python-interpreter配置MonkeyRunner

    在Ubuntu系统中配置Eclipse以使用Python解释器进行MonkeyRunner自动化测试,需要掌握几个关键知识点和步骤。首先,MonkeyRunner是Android提供的一个工具,它可以运行测试脚本,使用Python语言编写,通过控制台或网络...

    MonkeyRunner--从环境构建

    Python是一种广泛使用的高级编程语言,因为MonkeyRunner脚本是用Python语法编写的,所以需要有Python环境的支持。Python的安装同样需要配置环境变量,以便系统可以识别Python命令和脚本。 3. 设置环境变量。这是将...

    Andorid_Monkeyrunner帮助文档

    Android平台最新的monkeyrunner帮助文档,包含所有monkeyrunner的方法及其使用说明,是学习monkeyrunner必不可少的文档。

    Monkey_runner使用说明

    可以通过在命令行运行`monkeyrunner --help`来查看基本的命令行选项,或者在Python脚本中使用`MonkeyRunner.help()`方法来获取API的详细信息。 4. **使用插件扩展Monkeyrunner**: Monkeyrunner API允许开发者通过...

    Monkeyrunner 常用按键总结

    在 Monkeyrunner 中,常用按键是进行自动化测试时不可或缺的部分,以下是对这些按键的详细说明: 1. Home键:KEYCODE_HOME - 这个键用于回到设备的主屏幕。在Monkeyrunner脚本中,你可以使用`device.press('KEYCODE...

    lowen:android monkeyrunner自动测试系统

    ###说明洛文基于monkeyrunner的安卓应用的自动化测试,并输出测试结果到HTML的框架仿腾讯测试框架 ## lowen3版本稳定支持多个设备(最多40个USB连接)同时执行脚本 代码有待完善,欢迎有兴趣的朋友一起讨论(目前...

    Monekyrunner需要的JDK、SDK和完整的安装说明

    MonkeyRunner是Android SDK的一部分,因此在使用MonkeyRunner之前,你需要先安装SDK。安装SDK时,记得选择你需要的Android版本以及相关的工具,特别是`platform-tools`和`build-tools`目录,因为它们包含了与...

    安卓软件测试笔记

    这里主要关注的是使用Monkeyrunner进行自动化测试,以及Android虚拟环境的搭建。Monkeyrunner是一款由Android SDK提供的工具,它允许用户通过编写Python脚本来控制设备或模拟器,进行各种自动化测试。 首先,我们来...

    [android]android自动化测试九之monkeyRecord

    MonkeyRecord允许开发者通过图形化方式记录用户交互,将其转化为可执行的MonkeyRunner脚本,使得测试过程更贴近真实用户的使用场景。 首先,MonkeyRecord的工作原理是通过监控屏幕上的触摸事件,将这些事件转化为...

Global site tag (gtag.js) - Google Analytics