功能介绍
UiSelector是一种搜索条件,可以在当前界面查询和获取元素的句柄,假如找到一个匹配的元素,就返回布局层次上的第一个元素,作为UiObject
通过各种属性以及节点关系定位组件
- 测试步骤
找到对象 -> 操作对象
找对象依赖UiSelector ,操作依赖UiObject
例子:
@Test
public void testDemo() throws UiObjectNotFoundException {
UiSelector x = new UiSelector().text("phone");
UiObject object = new UiObject(x);
object.click();
}
第一个是搜索条件,二是根据搜索条件找到对象,三就是对对象进行操作
源码简介:
/**
* Specifies the elements in the layout hierarchy for tests to target, filtered
* by properties such as text value, content-description, class name, and state
* information. You can also target an element by its location in a layout
* hierarchy.
* @since API Level 16
*/
android的布局
- 线行布局 LinearLayout
- 表格布局 TableLayout
- 相对布局 RelativeLayout
- 帧布局 FrameLayout
- 网格布局 GridLayout
- 绝对布局 AbsoluteLayout
android布局组件属性
常用组件 | Text | 备注 |
---|---|---|
文本框 | TextView | |
编辑框 | EditText | |
按钮 | Button | |
复选框 | CheckBox | |
状态开关按钮 | ToggleButton | |
开关 | Switch | |
拖动条 | SeekBar | |
时钟 | AnalogClock DigitalClock | |
计数器 | Chronometer | |
列表视图 | ListView | |
网格视图 | GridView | |
进度条 | ProgressBar | |
星际评分条 | RatingBar | |
提示信息框 | Toast | |
滚动视图 | ScrollView |
image.png
匹配关系
- 完全匹配
- 包含匹配 Contains
- 正则匹配 Matches
- 起始匹配 StartWith
image.png
image.png
节点关系
image.png
对象搜索 - 文本属性定位
返回值 | API | 说明 |
---|---|---|
UiSelector | text(String text) | 文本 |
UiSelector | textContains(String text) | 文本包含 |
UiSelector | textMatches(String reges) | 文本正则 |
UiSelector | textStartsWith(String text) | 文本起始匹配 |
对象搜索 -- 描述属性定位
返回值 | API | 说明 |
---|---|---|
UiSelector | description(String desc) | 描述 |
UiSelector | descriptionContains(String desc) | 描述包含 |
UiSelector | descriptionMatches(String regex) | 描述正则 |
UiSelector | descriptionStartWith(String desc) | 描述开始字符匹配 |
对象搜索 -- 类名定位
返回值 | API | 说明 |
---|---|---|
UISelector | className(String className) | 类名称 |
UiSelector | classNameMatches(String regex) | 正则类名 |
对象搜索 -- 包名定位
返回值 | API | 说明 |
---|---|---|
UISelector | packageName(String className) | 包名 |
UiSelector | packageNameMatches(String regex) | 包名正则 |
对象搜索 -- 索引以及实例
返回值 | API | 说明 |
---|---|---|
UISelector | index(int index) | 索引 |
UiSelector | instance(int instance) | 实例 |
对象搜索 -- 资源ID
返回值 | API | 说明 |
---|---|---|
UISelector | resourceId(String id) | 资源ID |
UiSelector | resourceIdMatches(String regex) | 资源ID正则 |
对象搜索 -- 特殊属性
返回值 | API | 说明 |
---|---|---|
UISelector | checked(boolean val) | 选择属性 |
UiSelector | clickable(boolean val) | 可点击属性 |
UiSelector | enable(boolean val) | enable属性 |
UiSelector | focusable(boolean val) | 焦点属性 |
UiSelector | focused(boolean val) | 当前焦点属性 |
UiSelector | longclickable(boolean val) | 长按属性 |
UiSelector | scrollable(boolean val) | 滚动属性 |
UiSelector | selected(boolean val) | 选择属性 |
对象搜索 -- 节点
返回值 | API | 说明 |
---|---|---|
UISelector | childSelector(UiSelector selector) | 从当前类递归查找符合条件的子类组件 |
UISelector | fromParentSelector(UiSelector selector) | 从父类递归查找符合条件的子类组件 |
节点属性
image.png
手势操作
返回值 | API | 说明 |
---|---|---|
boolean | performTwoPointerGesture(Point startPoint1, Point startPoint2, Point endPoint1,Point endPoint2, int steps) | 两个手指触控手势,可定义任意手势和形状 |
boolean | performMultiPointerGesture(PointerCoords[] ...touches) | 单指手势,可定义任意手势和形状 |
boolean | pinchIn(int percent, int steps) | 手势操作,两点向内收缩 |
boolean | pinchOut(int percent, int steps) | 手势操作,两点向外收缩 |
image.png
public void testGesture() {
UiObject object = new UiObject(new UiSelector().resourceId("www.com"));
//object.pinchIn(80, 20)
//object.pinchOut(80, 20)
Point startPoint1, startPoint2, endPoint1, endPoint2;
startPoint1 = new Point();
startPoint2 = new Point();
endPoint1 = new Point();
endPoint2 = new Point();
startPoint1.x = 157; startPoint1.y=183;
startPoint2.x = 122; startPoint2.y=455;
endPoint1.x = 948;endPoint1.y = 195;
endPoint2.x = 930;endPoint2.y = 493;
object.performTwoPointerGesture(startPoint1, startPoint2, endPoint1, endPoint2, 50);
}