uiautomator使用手册.docx
- 文档编号:23405062
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:12
- 大小:112.14KB
uiautomator使用手册.docx
《uiautomator使用手册.docx》由会员分享,可在线阅读,更多相关《uiautomator使用手册.docx(12页珍藏版)》请在冰豆网上搜索。
uiautomator使用手册
uiautomator使用手册
使用环境:
...............................................................................................................1
AndroidDocument:
.....................................................................................................4
创建一个uiautomator的测试工程:
...........................................................................4
运行比较简单:
........................................................................................................4
怎么建立一个工程:
.................................................................................................4
1.创建测试工程..............................................................................................4
2.Eclipse创建一个工程(见上)....................................................................5
3.编写代码.....................................................................................................5
4.Build(通过Eclipse见上图),antbuild........................................................5
操作类函数:
............................................................................................................5
点屏幕上的控件或坐标操作................................................................................5
拖拽...................................................................................................................6
长按...................................................................................................................6
其他操作............................................................................................................7
获得屏幕属性的函数接口:
.......................................................................................8
验证工作:
...............................................................................................................9
强大的监控管家,...................................................................................................10使用环境:
JDK
安装后应该JAVA_HOME在环境变量里面,如果没有手动加,比如我的是JAVA_HOME,,,,C:
\Program,Files\Java\jdk1.7.0_17,
AndroidSDK
环境变量:
ANDROID_HOME=你的androidsdk根目录,我的是
C:
\adt-bundle-windows-x86_64-20130522\sdk
Adb环境变量,tools环境变量比如我的是
C:
\adt-bundle-windows-x86_64-20130522\sdk\tools;C:
\adt-bundle-windows-x86_64-20130
522\sdk\platform-tools,
Monitor.bat在tools里可以找到,用来查看屏幕上的组件
WinAnt编译工具
安装完之后应该就有环境变量
ANT_HOME=C:
\Program,Files,(x86)\WinAnt,
Bettertohave:
Eclipse用于编写编译:
EclipseIDEforJavaDevelopers,
步骤:
1.CreateanewJavaprojectinEclipse,andgiveyourprojectanamethatisrelevanttothe
testsyou’reabouttocreate(forexample,"MyAppNameTests").Intheproject,youwillcreate
thetestcasesthatarespecifictotheapplicationthatyouwanttotest.2.FromtheProjectExplorer,right-clickonthenewprojectthatyoucreated,then
selectProperties>JavaBuildPath,anddothefollowing:
a.ClickAddLibrary>JUnitthenselectJUnit3toaddJUnitsupport.
b.ClickAddExternalJARs...andnavigatetotheSDKdirectory.Underthe
platformsdirectory,selectthelatestSDKversionandaddboth
theuiautomator.jarandandroid.jarfiles.
在eclipse配置antbuild,如果不想使用eclipse编译而手动使用antbuild命令来编译也行也
挺方便。
Yourproject右键Properties,Builders->New->
SetTargets:
选择build和jar:
AndroidDocument:
#configure
创建一个uiautomator的测试工程:
建议只下载android4.2.2,因为api=16里面接口太少了,达不到使用的目的,手机也必须刷
成android4.2.2的(现在Dongo,Odin,Pelican都可以)
注意:
拷贝实例中的工程需要修改local.properties
注销掉这种字眼#sdk.dir=C:
\\adt-bundle-windows-x86_64-20130522\\sdk
因为工程会自动寻找ANDROID_HOME环境变量。
环境变量里面有ANDROID_HOME=你的androidsdk根目录,我的是
C:
\adt-bundle-windows-x86_64-20130522\sdk
运行比较简单:
adbshelluiautomatorruntestxxxxxx.jar-cpackageName#MethodName
adbshelluiautomatorruntestuiautotest.jar,xxx.jar-cpackage.className,package.class#method
怎么建立一个工程:
1.创建测试工程
-p
2.Eclipse创建一个工程(见上)
把步骤1内的东西拷贝到eclipse建立的工程里头
3.编写代码
4.Build(通过Eclipse见上图),antbuild
操作类函数:
点屏幕上的控件或坐标操作
publicvoidclickChildByText(Stringcls,Stringtext,booleanisNewWindow)点属于cls的类名下面的含有text的控件,如果点开的是新窗口就让isNewWindow为true
publicvoidclickChildItemByInstance(StringclassName,intinstance,booleanisNewWindow)throwsUiObjectNotFoundException{点击任何className屏幕上第instance个的控件,如果点开的是新窗口就让
isNewWindow为true
publicvoidclickClass(Stringcls,intinstance,booleanisNewWindow)点击类名为cls,屏幕上第instance个的cls,如果点开的是新窗口就让isNewWindow为true
publicvoidclickContentDesc(Stringtext,booleanisNewWindow)throwsUiObjectNotFoundException
点击ContentDescription为text,如果点开的是新窗口就让isNewWindow为true
publicvoidclickContentDescContains(Stringtext,booleanisNewWindow)
throwsUiObjectNotFoundException点击ContentDescription包含为text,如果点开的是新窗口就让isNewWindow为true
publicvoidclickLauncher(intcol,introw,intpage)
这个用于点击屏幕的方块,这是为了给YugaHome的launcher准备的,
publicvoidclickPoint(intx,inty)
点击屏幕上的坐标(x,y)
publicvoidclickPoint(Pointpt)
点击坐标为Point的点
publicvoidclickPointByRelative(floatx,floaty)
按相对坐标点击,比如x=0.5f,y=0.5f就是点击屏幕中央,换算关系就是实际坐标/实际屏幕宽度或高度
publicvoidclickText(Stringtext,booleanisNewWindow)点击文字为text,如果是新窗口就true,否则为false
publicvoidclickTextContains(Stringtext,booleanisNewWindow)点击文字包含text,如果是新窗口就true,否则为false
publicvoidclickTextRegExp(StringregExp,booleanisNewWindow)点击文字为正则表达式regExp,如果是新窗口就true,否则为false拖拽
drag(intstartX,intstartY,intendX,intendY,intsteps)拖拽操作,起点到重点,steps:
100=0.5s,通常我设置为20
drag(Point[]segments,intsegmentSteps)
同上,只是用Point数组
publicvoiddrag(Stringfrom,Stringend,intsteps)拖拽:
从字符from到字符end,steps:
100=0.5s,通常我设置为20
publicvoiddragDirection(Stringdirection,intsteps)拖拽方向left,right,up,ordown
publicvoiddragRelative(floatstartX,floatstartY,floatendX,floatendY,intsteps){
按照相对坐标进行拖拽
publicvoiddragViewByClsToView(StringclsFrom,intinstanceFrom,
StringclsTo,intinstanceTo,intsegmentSteps)从类名拖拽:
类clsFrom在屏幕上第instanceFrom个,到屏幕上第instanceTo的clsTo
publicvoidenterText(Stringtext)
键入文字:
text,在文本框内
publicvoidenterTextInEditor(Stringtext,Stringcls,intinstance)//testok
在屏幕第instance个的文本控件类名为cls里键入文字text
长按
publicvoidlongClickContentDesc(Stringtext)长按文本为Contentdescription为text的控件
publicvoidlongClickText(Stringtext)长按文本为text的控件
publicvoidlongClickTextContains(Stringtext)长按屏幕包含text的控件
publicvoidlongTap(intx,inty,inttime)
长按坐标(x,y)时间为time(为ms)
voidpressKey(StringKey)
PressKeyofHome,back,delete,menu,down,up,left,right,center,search,
recentapp,power,volumeup,volumedown,mute,camera,etc.
pressKeyCode(intkey){
跟KeyEvent,特殊的时候非常有必要
publicvoidscroll(Stringorientation){*Dragscreentowhatorientation,orientationcanbe"left","right",
*"up","down"suchas"left"isfromrightofscreentoleftofscreen
publicvoidscrollToBegining(Stringdirection,intmaxScrolls){滚到开始
UiObjectscrollToFindText(Stringtext,Stringdirection,
intmaxScrolls)
滚着去发现text,滚的方向是direction,值可以是"Horizontal"or"Vertical",最大混动次数
publicvoidscrollUpOnView(Stringcls,intsteps)
setOrientationLandscape()
setOrientationPortrait()
其他操作
disableLockScreen
滑动解锁
moreMenu()
打开标准控件more菜单
publicvoidnavigationUp()标准控件回到主界面
publicvoidopenAppFromRecentApps(StringappName)从app最近历史记录打开app
publicbooleanopenLauncherAndFind(Stringtext)在标准launcher里找东西,这个在Home6上不工作
openStatusBar()
下拉状态栏
wakeUp()唤醒手机
获得屏幕属性的函数接口:
publicUiObjectfindText(Stringtext)findTextandreturnUiObject,thenyoucanoperatethisUiObject
publicUiObjectfindView(StringclsName,intinstance)Findviewbyclassnameandinstance,returnUiObjectcanbeoperatableorverfication
publicUiObjectgetChildObjInScrollView(StringscrollCls,Stringtext,
intmaxScrolls)
T//testfailed,failrate50%
publicPointgetCoordinateByDes(Stringtext)
得到contentDescription为text的坐标
publicPointgetCoordinateByText(Stringtext)得到text坐标
publicPointgetCoordinateByView(Stringcls,intinstance)屏幕上第instance个的cls的坐标
publicPointgetCoordinateFromChildView(StringparentCls,intparentInstance,StringtargetCls,inttargetInstance)得到第parentInstance个父类parentCls,中的第targetInstance个子类targetCls用于复杂的操作
publicStringgetTextOnView(Stringcls,intinstance)得到第instance个的cls上的文本
验证:
publicbooleanisCheckedOfCheckBox(intinstance)第instance个checkbox控件是否被enable
publicbooleanisCheckedOfSwitch(intinstance)
第instance个switch控件是否被enable
publicbooleanisViewWithTextContains(Stringtext)屏幕中是否含有字符text
publicbooleanisViewWithTextContainsRegExp(Stringregexp)屏幕中是否含有字符符合正则表达式为regexp
publicbooleanwaitForTextExists(Stringtext,inttimeout)
等待字符出现,timeout为超时限定
publicbooleanwaitForTextGone(Stringtext,inttimeout){等待屏幕上text消失,超时为timeout
验证工作:
Assert(断言)用于检测条件是否成立,当条件成立则Assert方法通过,否则抛出异常。
例如Assert.assertEquals(3,result);判断result是否跟期望的3相等,如果相等则通过,否则测试失败。
1.assertTrue/False();判断一个条件是true还是false。
2.assertEquals();
publicvoidassertPackageAppear(StringpkgName)判断包名称是否在当前界面publicvoidassertTextPresent(Stringstring)判断string是否在当前界面publicvoidassertViewMatches(Stringcls)判断className为cls是否在当前界面publicvoidfailTest(Stringmsg)直接fail这条测试
其他父类还提供了很多assert函数
比如
强大的监控管家,
用的得当会case十分健壮
publicvoiddismissUnWantedWindow(finalStringtargetPkg)
ifUIleaveyourapplication,themethodwillpressBackkeytrytoget这是一种用法,可能还会有其他用法,暂时这一个
用完之后记得释放:
getUiDevice().removeWatcher(watchName)这个方法用法我已经给出一个例子,不过建议自己写了,或者给点提示大概有那些意外情况
SVN管理:
Tips:
publicvoidsetUp()throwsException{
System.out.println("执行setup");
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- uiautomator 使用手册