MonkeyRunner (一)

monkeyrunner


The
monkeyrunner tool provides an API for writing programs that control an Android
device or emulator from outside of Android code. With monkeyrunner, you can
write a Python program that installs an Android application or test package,
runs it, sends keystrokes to it, takes screenshots of its user interface, and
stores screenshots on the workstation. The monkeyrunner tool is primarily
designed to test applications and devices at the functional/framework level and
for running unit test suites, but you are free to use it for other purposes.

Monkeyrunner工具为程序提供了可以从安卓代码之外的方式控制安卓设备或者模拟器的API.通过monkeyrunner,你能用python编程,安装安卓应用或者测试包,运行它,发送按键给它,从UI上截图,并且把截图存到工作站上.monkeyrunner工具主要设计用来在功能或者框架层级测试程序和设备并用来运行单元测试套件,但是你可以为了其他目的随便使用.

The
monkeyrunner tool is not related to the UI/Application
Exerciser Monkey
, also known as the monkey tool. The monkey tool runs in an adb shell directly on the device or
emulator and generates pseudo-random streams of user and system events. In
comparison, the monkeyrunner tool controls devices and emulators from a
workstation by sending specific commands and events from an API.

monkeyrunner工具与monkey工具没有关系,尽管都有monkey这个字.
Monkey 工具在ADB shell中直接运行在设备和模拟器上并生成用户伪随机事件流和系统事件.为了对比,monkeyrunner
工具通过从工作站上发送指定API中的命令和事件控制设备和模拟器.

The
monkeyrunner tool provides these unique features for Android testing:

monkeyrunner
工具为安卓测试提供了以下这些独特功能:

  • Multiple device control: The monkeyrunner API
    can apply one or more test suites across multiple devices or emulators. You
    can physically attach all the devices or start up all the emulators (or both)
    at once, connect to each one in turn programmatically, and then run one or
    more tests. You can also start up an emulator configuration programmatically,
    run one or more tests, and then shut down the emulator.

  多设备控制: monkeyrunner
API能应用跨多个设备和模拟器应用一个或多个测试套件.你能在物理上一次连上所有设备和启动所有的模拟器,依照程序依次连接,并且运行一个或多个测试.你也能启动配置好的模拟器,运行一个或多个测试并且关掉模拟器.

  • Functional testing: monkeyrunner can run an
    automated start-to-finish test of an Android application. You provide input
    values with keystrokes or touch events, and view the results as
    screenshots.

  功能测试:
monkeyrunner能为安卓应用运行自动的从开始到结束的测试.你能输入按键或者触摸事件的值并从截图上看到结果.

  • Regression testing - monkeyrunner can test
    application stability by running an application and comparing its output
    screenshots to a set of screenshots that are known to be correct.

  回归测试: monkeyrunner
能通过运行应用和对比运行结果截图与正确截图测试程序稳定性.

  • Extensible automation - Since monkeyrunner is
    an API toolkit, you can develop an entire system of Python-based modules and
    programs for controlling Android devices. Besides using the monkeyrunner API
    itself, you can use the standard Python os and subprocess modules to call Android tools such
    as Android Debug
    Bridge
    .

    You can also add your own classes to the
    monkeyrunner API. This is described in more detail in the section Extending
    monkeyrunner with plugins
    .

  可扩展的自动化工具. 因为monkeyrunner是一个API工具包,你能基于python
modules和安卓控制程序开发一个完整系统.除了使用monkeyrunner本身的API,你也能使用python os
和subprocess 模块调用安卓工具,例如 android
debug brige.

   你也能添加你自己的类去monkeyrunner 的API, 这个更多的介绍在Extending
monkeyrunner with plugins
.

The
monkeyrunner tool uses Jython, a implementation of Python that uses
the Java programming language. Jython allows the monkeyrunner API to interact
easily with the Android framework. With Jython you can use Python syntax to
access the constants, classes, and methods of the API.

monkeyrunner
工具使用Jython, 一种用JAVA实现的Python语言.Jython 允许monkeyrunner的API与安卓框架更容易的交互. 用Jython
你能用python的语法去连接常量,类,和API中的方法.

时间: 2024-10-10 05:14:40

MonkeyRunner (一)的相关文章

第1章1节《MonkeyRunner源码剖析》概述:前言(原创)

天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文"寻求合作伙伴编写<深入理解 MonkeyRunner>书籍".但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在所难免.有需要的就参考下吧,转发的话还请保留每篇文章结尾的出处等信息. 前言 相信大家做过安卓移动平台UI自动化开发的必然会用过,至少听过MonkeyRunner这个名字.MonkeyRunner是一个针对安卓平台的UI自动化测试框架,这个框架的其中一个但绝不是唯一的优点是支持用当今非常流

Android 自动化测试(3)&lt;monkeyrunner&gt; 根据ID查找对象&amp;touch&amp;type (python)

我在之前的两篇文章中用java来实现过 Android 自动化测试(1)如何安装和卸载一个应用(java).Android 自动化测试(2)根据ID查找对象(java). 但是本质上都是用monkeyrunner对应的java lib 来实现的,但是相关的文档非常少,如果真的要用monkeyrunner来做功能性的自动化测试,强烈还是推荐使用python语言 1.monkey runner The monkeyrunner tool provides an API for writing pro

第6章1节《MonkeyRunner源代码剖析》Monkey原理分析-事件源-事件源概览

在上一章中我们有简要的介绍了事件源是怎么一回事.可是并没有进行详细的描写叙述.那么往下的这几个小节我们就须要把这方面的知识给补充完整. 这一节我们先主要环绕MonkeySourceNetwork这个事件源来学习事件源的框架结构.首先,要理解事件源,必须先搞清楚几个问题: 事件从哪里来? Monkey的事件来源有多个方面,可是作为MonkeyRunner框架的一部分,它的事件来源主要是来自MonkeyRunner通过网络Socket(USB/TCP协议)发送过来的命令字串.MonkeySource

monkeyrunner对比屏幕局部图像.getSubImage()

monkeyrunner对比屏幕局部图像.getSubImage() monkeyrunner执行测试时使用.takeSnapshot()截图,默认截取整个屏幕,包含了系统的状态栏.真实手机状态栏中包含如电量/信号量/消息提示等变量,使用.sameAs()对比整个屏幕的截图时就很容易出现错误.而使用.getSubImage()获得局部图像,然后再进行对比,就减少了monkeyrunner执行结果出错的概率. monkeyrunner使用getSubImage()获取截图局部图像,示例如下: #第

开启真机的View Server引入HierarchyViewer/By写monkeyrunner自动化测试脚本

其实相关文章网上也有不少了,不过在真机上开启View Server的中文文章好像只有一篇,前段时间按照这篇文章的内容,并结合英文源文去hack我的Nexus S(4.1.2)也走了一点弯路.现在总结一下我的步骤(其实有相当一部分拷贝了这篇,衷心感谢原文作者).并写点在开启View Server之后monkeyrunner的脚本. 先交待一下背景,monkeyrunner作为自动化测试Android系统工具在某些情况下还是比Robotium易用一些,不过monkeryrunner判断测试结果是否正

第4章4节《MonkeyRunner源码剖析》ADB协议及服务: ADB命令行客户端使用简介(原创)

天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文"寻求合作伙伴编写<深入理解 MonkeyRunner>书籍".但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在所难免.有需要的就参考下吧,转发的话还请保留每篇文章结尾的出处等信息. 从前面几个小节我们知道ADB命令行客户端是存在与主机端的一个命令,用户可以使用该命令来发送服务请求到ADB服务器,ADB服务器再判断该服务请求是主机服务请求还是本地服务请求来决定是否应该将请求传送给远程adbd守护进程

第5章1节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 官方简介(原创)

天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文"寻求合作伙伴编写<深入理解 MonkeyRunner>书籍".但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在所难免.有需要的就参考下吧,转发的话还请保留每篇文章结尾的出处等信息. 在MonkeyRunner的框架中,Monkey是作为一个服务来接受来自MonkeyRunner客户端发送过来的命令,然后针对每条命令请求进行相应的处理,所以它并不是作为一个随机压力测试的工具来运作.本书中的Monke

第5章2节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 启动流程概览(原创)

天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文"寻求合作伙伴编写<深入理解 MonkeyRunner>书籍".但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在所难免.有需要的就参考下吧,转发的话还请保留每篇文章结尾的出处等信息. 每个应用都会有一个入口方法来供操作系统调用执行,Monkey这个应用的入口方法就是在Monkey.java这个类里面的,也就是说Monkey.java就是整个Monkey应用的入口类. Monkey作为一个命令行应用,

第5章3节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 启动脚本(原创)

天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文"寻求合作伙伴编写<深入理解 MonkeyRunner>书籍".但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在所难免.有需要的就参考下吧,转发的话还请保留每篇文章结尾的出处等信息. 本节我们先看下Monkey是怎么启动起来的.在今后分析到MonkeyRunner的原理的时候我们会看到客户端是通过ADB往Android目标测试机器发送一个"monkey -port 12345"的

第5章4节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 命令行参数解析(原创)

天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文"寻求合作伙伴编写<深入理解 MonkeyRunner>书籍".但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在所难免.有需要的就参考下吧,转发的话还请保留每篇文章结尾的出处等信息. 设置好Monkey的CLASSPATH环境变量以指定"/system/framework /framework/monkey.jar"后,/system/bin/monkey这个shell脚本就会通