UiAutomator笔记之UiObject API(四)

来源:互联网 发布:在b站做网络直播有延迟 编辑:程序博客网 时间:2024/05/19 14:19

一、UiObject 功能

UiObject用来代表一个组件对象,它提供一系列方法和属性来模拟在手机上的实际操作。如:文本的输入和清除、点击、长按、拖动、滑动,也可获取组件的属性、判断组件对象是否存在等。


二、API详细介绍

1、点击与长按

(1)相关API

返回值API说明booleanclick()点击对象booleanclickAndWaitForNewWindow(long timeout)点击对象,等待新窗口出现,参数为等待超时时长booleanclickAndWaitForNewWindow()点击对象,等待新窗口出现booleanclickBottomRight()点击对象的右下角booleanclickTopLeft()点击对象的左上角booleanlongClick()长按对象,对对象执行长按操作booleanlongClickBottomRight()长按对象的右下角booleanlongClickTopLeft()长按对象的左上角

(2)示例

new UiObject(new Selector().resourceId("xxxxx").click();//对指定资源id的组件执行点击操作

2、拖拽与滑动
(1)区别
拖拽:将控件从当前位置移动到指定位置
滑动:向某一方向(上、下、左、右)移动一小段距离

(2)相关API
返回值API说明booleandragTo(UiObject destObj, int steps)拖拽对象到另一个对象位置上,步长可设置拖动的速度booleandragTo(int destX, int destY, int steps)拖拽对象到屏幕某个坐标位置上,步长可设置拖动速度booleanswipeDown(int steps)拖动对象往下滑动booleanswipeLeft(int steps)拖动对象往左滑动booleanswipeRight(int steps)拖动对象往右滑动booleanswipeUp(int steps)拖动对象往上滑动


3、输入文本与清除文本

(1)相关API
返回值API说明booleansetText(String text)在对象中输入文本(实现方式:先清除文本再输入)voidclearTextField()清除编辑框中的文本(实现方式:长按再清除)


(2)补充说明

clearTextField()的内部实现方式是先长按文本框然后全选删除,导致有些编辑框无法通过调用该方法清除文本内容。这时最好自己写代码实现清除文本功能。

示例代码:

//将光标移动到行尾,使用backspace进行逐个删除

UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_MOVE_END);

//判断条件中w是编辑框为空时所显示的hint文本对象;当hint出现时,说明该编辑框内的文本已清空

while(!w.exists()){
UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_DEL);
}

4、获取对象的属性与属性的判断


(1)获取对象的属性-相关API
返回值API说明RectgetBounds()获得对象矩形坐标,矩形左上角坐标与右下角坐标intgetChildCount()获得下一级子类数量StringgetClassName()获得对象类名属性的类名文本StringgetContentDescription()获得对象的描述属性的描述文本StringgetPackageName()获得对象包名属性的包名文本StringgetText()获得对象的文本属性中的文本RectgetVisibleBounds()返回可见视图的范围,如果视图的部分是可见的,只有可见部分报告的范围
(2)获取父类与子类节点-相关API

返回值API说明UiObjectgetChild(UiSelector selector)获得对象的子类对象,可以递归获取子孙当中某个对象UiObjectgetFromParent(UiSelector selector)从父类获取子类,按照UiSeletor获取兄弟类(递归)


(3)属性的判断-相关API
返回值API说明booleanisCheckable()检查对象的checkable属性是否为truebooleanisChecked()检查对象的checked属性是否为truebooleanisClickable()检查对象的clickable属性是否为truebooleanisEnabled()检查对象的enabled属性是否为truebooleanisFocusable()检查对象的focusable属性是否为truebooleanisFocused()检查对象的focused属性是否为truebooleanisLongClickable()检查对象的longclickable属性是否为truebooleanisScrollable()检查对象的scrollable属性是否为truebooleanisSelected()检查对象的selected属性是否为true


5、手势的操作


(1)手势相关操作
两指平移 
多指平移 
两指合拢 o---> <---o
两指扩张 <---oo--->

(2)相关API
返回值API说明booleanperformMultiPointerGesture(PointerCoords[]... touches)执行单手指触控手势,可定义任意手势,与形状

boolean

performTwoPointerGesture(Point startPoint1, Point startPoint2, 
Point endPoint1, Point endPoint2, int steps)

执行任意两个手指触控手势,模拟两个手指手势booleanpinchIn(int percent, int steps)手势操作,两点向内收缩booleanpinchOut(int percent, int steps)手势操作,两点向外张开

6、判断对象是否存在

(1)相关API

返回值API说明booleanwaitForExists(long timeout)等待对象出现booleanwaitUntilGone(long timeout)等待对象消失booleanexists()检查对象是否存在

0 0
原创粉丝点击