take your monkey

更新时间:2023-01-02 00:02:12 阅读: 评论:0


2023年1月2日发(作者:尼泊尔大地震)

ThemonkeyrunnertoolprovidesanAPIforwritingprogrnkeyrunner,youcan

writeaPythonprogramthatinstallsanAndroidapplicationortestpackage,runsit,ndskeystrokestoit,takesscreenshotsofitsurinterface,andstores

keyrunnertoolisprimarilydesignedtotestapplicationsanddevicesatthefunctional/frameworklevelandforrunningunittest

suites,butyouarefreetouitforotherpurpos.

译文:monkeyrunner工具从外部代码为用来控制Android设备或模拟器的程序编写提供一个API。通过monkeyrunner,你可以编写一个Python程序:安装android

应用或者测试程序包、运行程序、发送键盘指令到程序、给程序界面截图、保存截图到工作站。monkeyrunner工具最初是设计用于在功能/框架层次测试应用和设备和

执行单元套件测试的,但是你也可以自由地用于其他目的。

ThemonkeyrunnertoolisnotrelatedtotheUI/ApplicationExercirMonkey,keytoolrunsinanadbshelldirectlyonthe

devicearison,themonkeyrunnertoolcontrolsdevicesandemulatorsfroma

workstationbyndingspecificcommandsandeventsfromanAPI.

译文:monkeyrunner工具和UI/ApplicationExercirMonkey(—也被称为monkey工具)是不相关的。monkey工具直接运行在设备和模拟器的一个adbshell中,产生

用户级别或者系统级别的伪随机流事件。相比而言,monkeyrunner工具是从工作站通过一个API发送具体的命令或者事件来控制设备和模拟器的。

ThemonkeyrunnertoolprovidestheuniquefeaturesforAndroidtesting:

monkeyrunner工具Android测试提供了这些独特的特性:

Multipledevicecontrol:Themonkeyrunnephysicallyattachallthedevicesor

startupalltheemulators(orboth)atonce,connecttoeachoneinturnprogrammatically,alsostartupanemulator

configurationprogrammatically,runoneormoretests,andthenshutdowntheemulator.

多设备控制:monkeyrunnerAPI可以应用一个或多个测试套件跨多个设备或模拟器。您可以在同一时间手动接上所有的设备或启动模拟器(或两者一起),按编程方式依次连接到每一个,

然后运行一个或多个测试。你也可以以编程方式启动一个模拟器配置,运行一个或多个测试,然后关闭模拟器。

Functionaltesting:monkeyrvideinputvalueswithkeystrokesortouchevents,and

viewtheresultsasscreenshots.

功能测试:monkeyrunner可以运行一个自动化的开始到结束的Android应用测试。你可以提供包含按键和触摸事件的输入值,以截图的方式观察结果视图。

Regressiontesting-monkeyrunnercantestapplicationstabilitybyrunninganapplicationandcomparingitsoutputscreenshotstoatofscreenshotsthatare

knowntobecorrect.

回归测试:monkeyrunner可以通过稳定地运行一个应用程序来测试应用程序,且和一组已知是正确的截图比较其输出的截图。

Extensibleautomation-SincemonkeyrunnerisanAPItoolkit,youcandevelopanentiresystemofPython-badmodulesandprogramsforcontrollingAndroid

susingthemonkeyrunnerAPIitlf,youcanuthestandardPythonosandsubprocessmodulestocallAndroidtoolssuchasAndroidDebug

Bridge.

可扩展的自动化:因为monkeyrunner是API工具包,您可以开发整个系统基于python的模块和程序用来控制安卓设备。除了使用monkeyrunnerAPI本身,您可以使用标准的Pythonos和子

流程模块来调用Android工具如:ADB。

describedinmoredetailinthectionExtendingmonkeyrunnerwithplugins.

ThemonkeyrunnertoolusJython,allowsthemonkeyrunnerAPItointeracteasilywith

thonyoucanuPythonsyntaxtoaccesstheconstants,class,andmethodsoftheAPI.

您还可以添加自己的类到monkeyrunnerAPI。相关内容在Extendingmonkeyrunnerwithplugins.部分有更详细描述。monkeyrunner工具使用Jython,一个使用Java编程语言的Python

的实现。基于Android框架Jython允许monkeyrunnerAPI很容易地交互。通过Jython您可以使用Python语法访问API的常量,类和方法。

ASimplemonkeyrunnerProgram

Hereisasimplemonkeyrunnerprogramthatconnectstoadevice,heMonkeyDeviceobject,theprograminstallsanAndroid

applicationpackage,runsoneofitsactivities,gramthentakesascreenshotoftheresult,creatingaMonkeyImageobject.

Fromthisobject,econtainingthescreenshot.

以下是一个简单的monkeyrunner程序—用于连接一个设备,创建一个MonkeyDevice对象。使用MonkeyDevice对象,程序安装一个Android应用包,执行一个自己

的activitie,发送key事件到对应activity。程序然后截取一张结果图片,生成一个MonkeyImage对象。从该对象,程序输出一个包含截图的.png文件。

#Importsthemonkeyrunnermodulesudbythisprogram

runnerimportMonkeyRunner,MonkeyDevice

#Connectstothecurrentdevice,returningaMonkeyDeviceobject

device=rConnection()

#thatthismethodreturnsaboolean,soyoucantest

#toeiftheinstallationworked.

lPackage('myproject/bin/')

#tsavariablewiththepackage'sinternalname

package='ication'

#tsavariablewiththenameofanActivityinthepackage

activity='tivity'

#tsthenameofthecomponenttostart

runComponent=package+'/'+activity

#Runsthecomponent

ctivity(component=runComponent)

#PresstheMenubutton

('KEYCODE_MENU',_AND_UP)

#Takesascreenshot

result=apshot()

#Writesthescreenshottoafile

oFile('myproject/','png')

ThemonkeyrunnerAPI

runner:

monkeyrunnerAPI被包含在runner这个包的三个模块之中

MonkeyRunner:

providesmethodsforcreatingUIsforamonkeyrunnerprogramandfordisplayingthebuilt-inhelp.

MonkeyRunner:一个对monkeyrunner程序来说有着实用方法的类。这个类为链接mokeyrunner到一个设备或者模拟器提供一个方法。它同样为一个monkeyrunner

程序创建各种UI和显示内置的帮助提供方法。

MonkeyDevice:assprovidesmethodsforinstallinganduninstallingpackages,startinganActivity,andndingkeyboard

outhisclasstoruntestpackages.

MonkeyDevice:代表一个设备或模拟器。这个类为安装和卸载程序包、启动一个活动,并向应用程序发送键盘或触摸事件提供方法。你也可以用这个类来运行测试包。

MonkeyImage:assprovidesmethodsforcapturingscreens,convertingbitmapimagestovariousformats,comparing

twoMonkeyImageobjects,andwritinganimagetoafile.

MonkeyImage:代表一个屏幕捕获图像。这个类提供了一些方法来捕获屏幕,将位图图像转换为各种格式,比较两个MonkeyImage对象,写一个图像到文件、

InaPythonprogram,rtamodule,uthe

Pythonfromstatement:

在一个Python程序中,您以一个Python模块方式访问每一个类。monkeyrunner工具并没有自动的导入这些模块。要导入一个模块,在声明中用Python语句:

runnerimport

whereimportmorethanonemoduleinthesamefromstatementbyparatingthemodulenameswith

commas.

以上是你要导入的类名。你可以在声明时以用逗号隔开模块名的方式来导入一个以上的模块

Runningmonkeyrunner

Youcaneitherrunmonkeyrunnerprogramsfromafile,othbyinvoking

themonkeyrunnercommandwhichisfoundinthetools/rovideafilenameasanargument,

themonkeyrunnercommandrunsthefile'scontentsasaPythonprogram;otherwi,itstartsaninteractivession.

***你可以从一个文件运行monkeyrunner程序或者在交互窗口中输入monkeyrunner语句。做这两个,你可以通过唤醒在你的SDK目录tools/子路径下的monkeyrunner

命令。如果您提供一个文件名作为参数,monkeyrunner命令按Python程序的方式运行文件的内容;否则,它开启一个会话窗口。

Thesyntaxofthemonkeyrunnercommandis

monkeyrunner命令的语法格式是:

monkeyrunner-plugin

Table1explainstheflagsandarguments.

Table1说明标记和参数

runnerflagsandarguments.

ArgumentDescription

-plugin

(Optional)nmoreabout

monkeyrunnerplugins,ifymorethan

onefile,includetheargumentmultipletimes.

为monkeyrunner指定一个包含插件的.jar文件。学习更多内容见Extendingmonkeyrunner

withplugins.指定多个插件,请多次输入参数。

Ifyouprovidethisargument,themonkeyrunnercommandrunsthecontentsofthefileas

rgumentisnotprovided,thecommandstartsaninteractive

ssion.

如果您提供这个参数,monkeyrunner命令按Python程序的方式运行文件的内容;否则,它开

启一个会话窗口。

(Optional)Flagsandargumentsfortheprogramin.

中程序的标志和参数

monkeyrunnerBuilt-inHelp

YoucangenerateanAPIreferenceformonkeyrunnerbyrunning:

通过运行以下命令可以为monkeyrunner生成一个API参考文档

Theargumentsare:

iithertextforplaintextoutputorhtmlforHTMLoutput.

是纯文本的文本输入或者HTML格式的html输出。

isapath-qualifiednamefortheoutputfile.

指为输出文件指定的路径格式的名字

ExtendingmonkeyrunnerwithPlugins使用插件扩展monkeyrunner

YoucanextendthemonkeyrunnerAPIwithcuthisfeatureto

extendtalsouthisfeaturetoinitializethemonkeyrunnerenvironment.

***您可以扩展monkeyrunnerAPI通过类(你用Java编程语言编写的且生成到一个或多个.jar文件)。您可以使用此功能来扩展monkeyrunnerAPI使用自己的类或扩展现有的类。您还可以使用这

个特性来初始化monkeyrunner环境。

Toprovideaplugintomonkeyrunner,invokethemonkeyrunnercommandwiththe-pluginargumentdescribedintable1.

***给monkeyrunner提供一个插件,唤醒monkeyrunner命令使用在table1中描述的参数-plugin

Inyourplugincode,youcanimportandextendthethemainmonkeyrunnerclassMonkeyDevice,MonkeyImage,

runner(eThemonkeyrunnerAPI).

在你的插件代码中,你可以导入和扩展主要的monkeyrunner类MonkeyDevice,MonkeyImage,和MonkeyRunner在runner中(见The

monkeyrunnerAPI).

'becaumonkeyrunnerinteractswiththe

deviceoremulatorbelowtheleveloftheframeworkAPIs.

****注意,插件不能让你你访问AndroidSDK。你不能导入包如:。这是因为monkeyrunner和设备或模拟器的交互基本在frameworkAPIs之下。

Thepluginstartupclass

eforaplugiifythisclass,addthekeyMonkeyRunnerStartupRunnerto

e'lowingsnippetshowshowyouwoulddothiswithinanantbuildscript:

Togetaccesstomonkeyrunner'sruntimeenvironment,ate.For

example,thisclasstsupsomevariablesinthedefaultnamespace:

e;

ate;

Interpreter;

publicclassMainimplementsPredicate{

@Override

publicbooleanapply(PythonInterpreteranInterpreter){

/*

*Examplesofcreatingandinitializingvariablesinthemonkeyrunnerenvironment's

*execution,themonkeyrunnerprogramcanrefertothevariables"newtest"

*and"u_emulator"

*

*/

("newtest","enabled");

("u_emulator",1);

returntrue;

}

}

本文发布于:2023-01-02 00:02:12,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/75193.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图