UIAutomator中UIDevice的API讲解

转载

原文地址:http://blog.sina.com.cn/s/blog_67e2fab50102v632.html

背景:

android sdk api 16开始,Android SDK开始支持两个做功能UI测试的新工具。

uiautomatorviewer,一个用以扫描以及分析Android应用程序的UI部件的工具。

以及uiautomator ,一个提供API用以自定义UI测试的Java库。

要应用上面两个工具,除了需要android sdk api 16以上的前提条件外,还要求Android SDK Tools为21版以上。

 

UiAutomator主要涉及一下几个类,大多数位于源码包的com.android.uiautomator.core下,以下几个类是平时在写脚本中用的最多的:UiDevice UiSelector UiScrollable UiObjec UiCollection

 

每个测试用例都需要继承UiAutomatorTestCase,以实现测试环境的setup,teardown等同能。而UiAutomatorTestCase则是通过继承Junit3中的TestCase类,并在其中的setUp() 、tearDown()、getParams() 函数中。其中主要是用Bundle实现Android Activity之间的通讯。在UiAutomatorTestCase,还加入了getUiDevice()等关于UiDevice的 函数,以实现在测试的任意地方均可调用UiDevice()。

 

UiDevice

此类主要包含了获取设备状态信息,和模拟用户至于设备的操作两类api。

 

可以通过getDisplaySizeDp(), getDisplayWidth() , getDisplayHeight() ,getProductName() ,getCurrentActivityName(), getCurrentPackageName() 等获取设备相关信息。

 

pressMenu(), pressBack(), pressHome(), pressSearch() ,pressDPadCenter(), pressDPadRight(), pressDPadLeft(), pressDPadUp(), pressDPadDown() ,pressDelete(), pressEnter(), pressKeyCode(), pressRecentApps(),click(),swipe(),getDisplayRotation() setOrientationLeft()… wakeUp(), sleep() ,dumpWindowHierarchy(), waitForWindowUpdate()等API可以灵活的操纵设备。

 

而takeScreenshot() 允许随时对设备截屏。

 

用于点击,拖拽的:

click(int x,int y)单机执行用户指定的任意坐标。例如你要点击哪个Button的时候,可以使用取坐标的方式,实现点击

drag(int start X ,int start y ,int end X ,in tent Y,int steps)从一个坐标到指定坐标。

 

获取信息

getCurrentPackageName()获取当前的包名字。

getDisplayHeight()获取设备的显示高度,以像素为单位。比如可以配合这drag(),获取到当前屏幕高宽后解锁。

 

旋转

FreezeRotation()禁用传感器,禁止选择,使其在当前状态。比如可以测试只在横屏或者竖屏的情况

 

锁屏和唤醒

Sleep()锁屏,调用该方法可以模拟电源键,如果是关闭则无效果。

WakeUp()唤醒。正好与sleep相反,也相当于模拟电源键。

Isscreeon()检查屏幕是否唤醒。配合着上面两个方法使用,可以检查上面两个方法是否已经作用

 

等待

Waitforidle(timeout),waitforidle

等待当前程序处于空闲状态,标注时间和不标注时间的区别在于一个是一直等,一个是给定的时间范围内等

 

监听器

Registerwatcher(string name,uiwatcher watcher)

注册监听器,可以对程序进行监听,在外层包裹,当程序异常的时候,就处理异常

 

最常用按键

Pressback()

回退,模拟手机按回退

Presshome()

HOME键,模拟手机按home

Pressmenu()

Men键盘,模拟手机按menu

 

滑动

Swipe(int start X ,int start y ,int end X ,in tent Y,int steps) 比如解锁屏幕的时候,可以使用这种方法

posted @ 2015-10-18 21:46  远洪  阅读(1139)  评论(0)    收藏  举报