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
where
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.指定多个插件,请多次输入参数。
rgumentisnotprovided,thecommandstartsaninteractive
ssion.
如果您提供这个参数,monkeyrunner命令按Python程序的方式运行文件的内容;否则,它开
启一个会话窗口。
monkeyrunnerBuilt-inHelp
YoucangenerateanAPIreferenceformonkeyrunnerbyrunning:
通过运行以下命令可以为monkeyrunner生成一个API参考文档
Theargumentsare:
ExtendingmonkeyrunnerwithPlugins使用插件扩展monkeyrunner
YoucanextendthemonkeyrunnerAPIwithcuthisfeatureto
extendtalsouthisfeaturetoinitializethemonkeyrunnerenvironment.
***您可以扩展monkeyrunnerAPI通过类(你用Java编程语言编写的且生成到一个或多个.jar文件)。您可以使用此功能来扩展monkeyrunnerAPI使用自己的类或扩展现有的类。您还可以使用这
个特性来初始化monkeyrunner环境。
Toprovideaplugintomonkeyrunner,invokethemonkeyrunnercommandwiththe-plugin
***给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
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 条评论) |