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

本文深入解析UiSelector的功能及使用方法,展示如何在自动化测试中利用UiSelector精确定位和操作UI元素,涵盖文本、描述、类名等多种定位方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

功能介绍

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

image.png

匹配关系

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

image.png

image.png

image.png

image.png

节点关系

image.png

image.png

对象搜索 - 文本属性定位

返回值API说明
UiSelectortext(String text)文本
UiSelectortextContains(String text)文本包含
UiSelectortextMatches(String reges)文本正则
UiSelectortextStartsWith(String text)文本起始匹配

对象搜索 -- 描述属性定位

返回值API说明
UiSelectordescription(String desc)描述
UiSelectordescriptionContains(String desc)描述包含
UiSelectordescriptionMatches(String regex)描述正则
UiSelectordescriptionStartWith(String desc)描述开始字符匹配

对象搜索 -- 类名定位

返回值API说明
UISelectorclassName(String className)类名称
UiSelectorclassNameMatches(String regex)正则类名

对象搜索 -- 包名定位

返回值API说明
UISelectorpackageName(String className)包名
UiSelectorpackageNameMatches(String regex)包名正则

对象搜索 -- 索引以及实例

返回值API说明
UISelectorindex(int index)索引
UiSelectorinstance(int instance)实例

对象搜索 -- 资源ID

返回值API说明
UISelectorresourceId(String id)资源ID
UiSelectorresourceIdMatches(String regex)资源ID正则

对象搜索 -- 特殊属性

返回值API说明
UISelectorchecked(boolean val)选择属性
UiSelectorclickable(boolean val)可点击属性
UiSelectorenable(boolean val)enable属性
UiSelectorfocusable(boolean val)焦点属性
UiSelectorfocused(boolean val)当前焦点属性
UiSelectorlongclickable(boolean val)长按属性
UiSelectorscrollable(boolean val)滚动属性
UiSelectorselected(boolean val)选择属性

对象搜索 -- 节点

返回值API说明
UISelectorchildSelector(UiSelector selector)从当前类递归查找符合条件的子类组件
UISelectorfromParentSelector(UiSelector selector)从父类递归查找符合条件的子类组件

节点属性

image.png

image.png

手势操作

返回值API说明
booleanperformTwoPointerGesture(Point startPoint1, Point startPoint2, Point endPoint1,Point endPoint2, int steps)两个手指触控手势,可定义任意手势和形状
booleanperformMultiPointerGesture(PointerCoords[] ...touches)单指手势,可定义任意手势和形状
booleanpinchIn(int percent, int steps)手势操作,两点向内收缩
booleanpinchOut(int percent, int steps)手势操作,两点向外收缩


image.pngimage.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);
   }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值