转:http://blog.csdn.net/yiwaChen/article/details/52590112
一、UiObject 功能
UiObject用来代表一个组件对象,它提供一系列方法和属性来模拟在手机上的实际操作。如:文本的输入和清除、点击、长按、拖动、滑动,也可获取组件的属性、判断组件对象是否存在等。
二、API详细介绍
1、点击与长按
(1)相关API
返回值 | API | 说明 |
boolean | click() | 点击对象 |
boolean | clickAndWaitForNewWindow(long timeout) | 点击对象,等待新窗口出现,参数为等待超时时长 |
boolean | clickAndWaitForNewWindow() | 点击对象,等待新窗口出现 |
boolean | clickBottomRight() | 点击对象的右下角 |
boolean | clickTopLeft() | 点击对象的左上角 |
boolean | longClick() | 长按对象,对对象执行长按操作 |
boolean | longClickBottomRight() | 长按对象的右下角 |
boolean | longClickTopLeft() | 长按对象的左上角 |
(2)示例
new UiObject(new Selector().resourceId("xxxxx")).click();//对指定资源id的组件执行点击操作2、拖拽与滑动
(1)区别
拖拽:将控件从当前位置移动到指定位置
滑动:向某一方向(上、下、左、右)移动一小段距离
(2)相关API
返回值 | API | 说明 |
boolean | dragTo(UiObject destObj, int steps) | 拖拽对象到另一个对象位置上,步长可设置拖动的速度 |
boolean | dragTo(int destX, int destY, int steps) | 拖拽对象到屏幕某个坐标位置上,步长可设置拖动速度 |
boolean | swipeDown(int steps) | 拖动对象往下滑动 |
boolean | swipeLeft(int steps) | 拖动对象往左滑动 |
boolean | swipeRight(int steps) | 拖动对象往右滑动 |
boolean | swipeUp(int steps) | 拖动对象往上滑动 |
3、输入文本与清除文本
(1)相关API返回值 | API | 说明 |
boolean | setText(String text) | 在对象中输入文本(实现方式:先清除文本再输入) |
void | clearTextField() | 清除编辑框中的文本(实现方式:长按再清除) |
(2)补充说明
clearTextField()的内部实现方式是先长按文本框然后全选删除,导致有些编辑框无法通过调用该方法清除文本内容。这时最好自己写代码实现清除文本功能。
示例代码:
//将光标移动到行尾,使用backspace进行逐个删除UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_MOVE_END);
//判断条件中w是编辑框为空时所显示的hint文本对象;当hint出现时,说明该编辑框内的文本已清空
while(!w.exists()){UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_DEL);
}
4、获取对象的属性与属性的判断
返回值 | API | 说明 |
Rect | getBounds() | 获得对象矩形坐标,矩形左上角坐标与右下角坐标 |
int | getChildCount() | 获得下一级子类数量 |
String | getClassName() | 获得对象类名属性的类名文本 |
String | getContentDescription() | 获得对象的描述属性的描述文本 |
String | getPackageName() | 获得对象包名属性的包名文本 |
String | getText() | 获得对象的文本属性中的文本 |
Rect | getVisibleBounds() | 返回可见视图的范围,如果视图的部分是可见的,只有可见部分报告的范围 |
(2)获取父类与子类节点-相关API
返回值 | API | 说明 |
UiObject | getChild(UiSelector selector) | 获得对象的子类对象,可以递归获取子孙当中某个对象 |
UiObject | getFromParent(UiSelector selector) | 从父类获取子类,按照UiSeletor获取兄弟类(递归) |
返回值 | API | 说明 |
boolean | isCheckable() | 检查对象的checkable属性是否为true |
boolean | isChecked() | 检查对象的checked属性是否为true |
boolean | isClickable() | 检查对象的clickable属性是否为true |
boolean | isEnabled() | 检查对象的enabled属性是否为true |
boolean | isFocusable() | 检查对象的focusable属性是否为true |
boolean | isFocused() | 检查对象的focused属性是否为true |
boolean | isLongClickable() | 检查对象的longclickable属性是否为true |
boolean | isScrollable() | 检查对象的scrollable属性是否为true |
boolean | isSelected() | 检查对象的selected属性是否为true |
5、手势的操作
两指平移
多指平移
两指合拢 o---> <---o
两指扩张 <---oo--->
(2)相关API
返回值 | API | 说明 |
boolean | performMultiPointerGesture(PointerCoords[]... touches) | 执行单手指触控手势,可定义任意手势,与形状 |
boolean | performTwoPointerGesture(Point startPoint1, Point startPoint2, | 执行任意两个手指触控手势,模拟两个手指手势 |
boolean | pinchIn(int percent, int steps) | 手势操作,两点向内收缩 |
boolean | pinchOut(int percent, int steps) | 手势操作,两点向外张开 |
6、判断对象是否存在
(1)相关API
返回值 | API | 说明 |
boolean | waitForExists(long timeout) | 等待对象出现 |
boolean | waitUntilGone(long timeout) | 等待对象消失 |
boolean | exists() | 检查对象是否存在 |