Java+Uiautomator自动化测试 -- 9.UiSelector学习

功能介绍

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

Java+Uiautomator自动化测试 -- 9.UiSelector学习_第1张图片

image.png

匹配关系

  • 完全匹配
  • 包含匹配 Contains
  • 正则匹配 Matches
  • 起始匹配 StartWith

Java+Uiautomator自动化测试 -- 9.UiSelector学习_第2张图片

image.png

Java+Uiautomator自动化测试 -- 9.UiSelector学习_第3张图片

image.png

节点关系

Java+Uiautomator自动化测试 -- 9.UiSelector学习_第4张图片

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) 从父类递归查找符合条件的子类组件

节点属性

Java+Uiautomator自动化测试 -- 9.UiSelector学习_第5张图片

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.pngJava+Uiautomator自动化测试 -- 9.UiSelector学习_第6张图片

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);
   }

你可能感兴趣的:(Java+Uiautomator自动化测试 -- 9.UiSelector学习)