monkeyrunner的翻译和解释

monkeyrunner
monkeyrunner 提供了一些api给写程序来控制一个android设备和一个模拟器从android的代码的后面。使用monkerrunner ,你可以写python程序安装一个android应用或者测试包,运行它,发送按键给它,截图用户界面和存储截图到用户的工作的地方。monkeyrunner工具是一个主要用来设计测试应用和设备在功能、框架水平和运行unit测试套,但是是免费使用的对于其他的目的。

monkeyrunner工具不关联Monkey工具的,monkey运行在通过adb sehll直接在设备或者模拟器上并且产生(用户和系统的时间)伪随机流。
对比,monkerrunner工具控制设备和模拟器从一个工作区域通过发送指定的命令行和时间从一个api中。(也即是monkerrunner是Selenium2的方式,而monkey是Selenium1的方式)
Selenium1:是将脚本放到设备上运行
Selenium2:在pc上运行来控制设备。

monkerrunner提供的一些特色:
1、多设备控制:monkerrunner 的api能够提供一个或者多个测试套通过多种设备或者模拟器。你可以通过物理点击所有的设备或者启动所有的模拟器同时,链接在依次的程序中,和运行一个或者多个测试。你能够启动一个模拟配置编程,运行一个或者多个测试和然后关闭模拟器。
2、功能测试:monkerrunner 能够运行一个自动的开始到完成测试android应用的测试。你提供一个输入值通过按键或者触摸事件和查看截图的结果。
3、回归测试:测试应用的稳定性通过运行一个应用和比较它的输出截图到一系列截图,然后知道是对的。
4、可扩展自动化 :因为monkerrunner是一个api工具包。你可以开发一个机遇python模块和程序开发一个完成的系统控制android设备。在使用这些api,你可以使用标准的python操作系统和子进程模块去调用android工具eg:adb。
同时,你也可以增加你的类库到monkeyruuner的api中,

一个简单的monkerrunner程序
这里是一个monkeyrunner程序连接设备和创建monkeyDevice对象,使用功能monkeyDevice兑现个,程序安装一个android应用程序包,运行一个活动和发送关键事件到活动。程序获得一个截屏的结果,创建monkerImage对象。 同这个对象,程序写出一个.png 文件截屏里。

# Imports the monkeyrunner modules used by this program
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice

# Connects to the current device, returning a MonkeyDevice object
device = MonkeyRunner.waitForConnection()

# Installs the Android package. Notice that this method returns a boolean, so you can test
# to see if the installation worked.
device.installPackage('myproject/bin/MyApplication.apk')

# sets a variable with the package's internal name
package = 'com.example.android.myapplication'

# sets a variable with the name of an Activity in the package
activity = 'com.example.android.myapplication.MainActivity'

# sets the name of the component to start
runComponent = package + '/' + activity

# Runs the component
device.startActivity(component=runComponent)

# Presses the Menu button
device.press('KEYCODE_MENU', MonkeyDevice.DOWN_AND_UP)

# Takes a screenshot
result = device.takeSnapshot()

# Writes the screenshot to a file
result.writeToFile('myproject/shot1.png','png')

monkeyrunner的api
monkeyrunner包括三个模块在包com.android.monkeyrunner 中
monkeyRunner:对于monkeyrunner编程是一个有效的类,这个类提供了连接诶monkeyrunner和设备或者模拟器。它同样提供方式去创建UIs给monkeyrunner程序和给显示创建的帮助。
monkeyDevice:表示一个设备和一个模拟器。这个类库提供了去安装或者下载包,开始一个活动和发送一个按键或者触摸事件到一个应用程序中,你同样可以使用功能这个类库运行测试包。
monkeyImage;表示一个屏幕的截图图像。这个类提供方式去截屏和转化bitmap图像到多种格式,比较两个monkeyImage对象,和一个图像到文件中。

在一个python程序中,你接受每一个类想python模块,monkeyrunner工具并没有自动导入这些模块。导入这个模块,eg:通过“from”关键字。
from com.android.monkeyrunner import <module>
<module>是一个你想导入的类。你可以导入多于一个module在一个相同的from表述中通过区分模块的名字通过“逗号”。

运行monkeyrunner
你可以 运行monkeyrunner程序从一个文件、或者写入monkeyrunner表述在要给交互的回话中。你可以处理他们动过调用monkeyrunner命令,可以查找到在SDK目录的tools/子目录下。如果提供一个文件名为参数, monkeyrunner命令运行文件的内容(如:python程序);其他的,它启动一个交互的回话。

monkeyrunner 命令的格式:
monkeyrunner -plugin <plugin_jar> <program_filename> <program_options>

monkeyrunner Built-in Help(创建的帮助)
产昇一个api借口给monkeyrunner通过运行:
monkeyrunner help.py <format> <outfile>

参数:
<format> text、html文件输出选择
<outfile> 输出的路径

Extending monkeyrunner with Plugins
(扩展monkeyrunner通过插件)
你可以扩展monkeyrunner api 通过你写的java程序和创建一个或者多个jar文件,你能够使用功能这些特色来扩展monkeyrunner的api 使用你自己的类或者扩展已经存在的类,你同样能够使用这些特色来初始化monkeyrunner的环境。
提供插件给monkeyrunner,需要调用monkeyrunenr 命令通过 -plugin <plugin_jar> 在table 1.
在对monkeyrunner提供插件的时候,你能够导入和扩展主要的monkeyrunenr类库MonkeyDevice, MonkeyImage, and MonkeyRunner 在 com.android.monkeyrunner .

说明:插件没有提供访问android SDK ,你不能狗导入包像com.android.app. 这个以为你monkeyrunner 和设备、模拟器交互在框架的APIs的水平上。

The plugin startup class(插件的启动类)
.jar 文件对于插件能够指定一个类实例化之前解脚本的执行的开始。去指定一个类,增加关键的MonkeyRunnerStartupRunner 到.jar文件的manifest里。值必须是类的名字去运行在开始。接下来的片段显示了你怎么做在一个ant并且创建脚本。
<jar jarfile="myplugin" basedir="${build.dir}">
<manifest>
<attribute name="MonkeyRunnerStartupRunner" value="com.myapp.myplugin"/>
</manifest>
</jar>

访问monkeyrunner运行时的环境,启动类能够实现com.google.common.base.Predicate<PythonInterpreter>
eg:这些类建立一些有用的变量在默认的命名空间。
package com.android.example;
import com.google.common.base.Predicate;
import org.python.util.PythonInterpreter;

public class Main implements Predicate<PythonInterpreter> {
    @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;
    }
}

总结:

monkeyrunner:就是一个Selenium2的一个app的测试框架,他是一个在pc机上通过连接来控制手机的app原生的版本。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值