Android-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    ossubprocess模块来调用如adb这样的Android工具    。    
    您还可以向monkeyrunner API中添加您自己的类。我们将在使用插件扩展monkeyrunner一节中对此进行详细讨论 。

monkeyrunner工具使用Jython(使用Java编程语言的一种Python实现)。Jython允许monkeyrunnerAPIAndroid框架轻松的进行交互。使用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

monkeyrunnerAPIcom.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内建帮助

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

monkeyrunner  help.py 

参数说明:

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

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

使用插件扩展monkeyrunner

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

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

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

请注意,插件无法让你访问AndroidSDK。您不能导入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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
北极狐是令人难以置信的动物 使用每个新标签页,享受美丽的极地狐狸高清壁纸图像。 北极狐是一种非常坚固的动物,可以在低至–58°F的严酷北极温度下生存。 北极狐很容易在冰雪上移动,甚至在必要时可以游泳,因此以远距离运动而闻名,它超越了人类以外的任何陆地哺乳动物。 人们通常认为北极狐是白色的,但是在夏天,积雪融化时,它们的皮毛变黑了,与环境融为一体。 每次打开新标签时,探索可爱的北极狐的美丽高清壁纸图像。 自定义您的新标签页,并在Chrome的每个新标签页中享受极地白狐狸的可爱壁纸图像。 获取极地狐狸的可爱高清图像,这些图像会给您带来欢乐和灵感,从而激发您的心情和动力,开始新的一天。 北极狐高清壁纸“新标签页”主题是您通往美好旅程的门户,您可以根据自己的喜好个性化所有内容,与您的网络共享并通过组织和跟踪待办事项列表来掌握最重要的事情。 功能:•根据您的喜好自定义仪表板•待办事项列表可跟踪您的目标•每个新选项卡均提供令人惊叹的图像•定期添加新的励志照片•使用Google搜索网络•放松身心的音乐使您感觉良好•快速访问访问量最大的网站•在新选项卡上显示应用程序和书签•当前位置的实时天气更新•自定义背景:最多20张个人图像请访问我们的主页以获取更多高清壁纸图像和新标签主题:https://www.impressivenature com请访问我们的MyStart博客,以获取我们网站上的最新新闻以及有关各种主题的文章,例如宠物,野生动物,世界自然奇观,著名地标和健康的生活方式提示:https://blog.mystart.com保持在触摸Facebook:https://www.facebook.com/MyStart Instagram:https://www.instagram.com/mystartnewtab Pinterest:https://www.pinterest.ca/mystart0561 支持语言:English
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值