2.UiSelector API 详细介绍

一、UiSelector类介绍

//通过各种属性与节点关系定位组件

简单实例:

public void testDemo2() throws UiObjectNotFoundException{

    UiSelector l= new UiSelector().text("相机");//搜索条件

    UiObject object=new UiObject(l);//一句搜索条件找到对象

    object.click();//操作对象

 


二、Androiud的布局与组件及组件属性介绍

1.Android常用布局

TablesAre
线性布局linearLayout
表格布局TableLayout
相对布局RelativelLayout
帧布局FrameLayout
网格布局GridLayout
绝对布局AbsoluteLayout

2.Android常用组件

//文本框、编辑框、按钮、单选按钮、复选框、状态开关按钮、拖动条等等

3.Android组件属性介绍

属性值值类型例子
indexint0
instanceint5
classStringandroid.widget.TextView
packageStringcom.jian.test
Content descStringstring
checkablebooleanfalse
cleckedbooleanfalse
clickablebooleantrue
enabledbooleanfalse
focusablebooleanfalse
focusedbooleanfalse
Scrollablebooleanfalse
Long-clickablebooleanfalse
passwordbooleanfalse
selectedbooleanfalse
boundsRect[366,999][708,1197]

三、四种匹配关系的介绍

1.四种匹配关系介绍

完全匹配(默认)

包含匹配(Contains)

正则匹配(Matches)–可以包含完全匹配、包含匹配、起始匹配

起始匹配(StartWith)

2.例子

匹配字符串:0123456789
完全匹配:0123456789
包含匹配:45678
正则匹配:\d{10}
起始匹配:01234

四、节点关系介绍

这里写图片描述

五、对象搜索-文本与描述

1.文本属性定位对象

返回值API说明
UiSelectortext(String text)文本
UiSelectortextContains(String text)文本包含
UiSelectortextMatches(String regex)文本正则
UiSelectortextStartsWith(String text)文本起始匹配
  • 实例:
public void testDemo1() throws UiObjectNotFoundException{


    //完全匹配:浏览器
    UiSelector l1= new UiSelector().text("浏览器");
    UiObject object1=new UiObject(l1);
    object1.click();


    //包含匹配:览器
    UiSelector l2= new UiSelector().textContains("览器");
    UiObject object2=new UiObject(l2);
    object2.click();


    //正则匹配:.*览.*
    UiSelector l3= new UiSelector().textMatches(".*览.*");
    UiObject object3=new UiObject(l3);
    object3.click();


    //起始匹配:浏览
    UiSelector l4= new UiSelector().textStartsWith("浏览");
    UiObject object4=new UiObject(l4);
    object4.click();    
}

 

2.描述属性定位对象

返回值API说明
UiSelectordescription(String desc)描述
UiSelectordescriptionContains(String desc)描述包含
UiSelectordescriptionMatches(String regex)描述正则
UiSelectordescriptionStartsWith(String desc)描述开始字符匹配
  • 实例:
public void testDesc() throws UiObjectNotFoundException{


    //完全匹配:应用
    UiSelector selector=new UiSelector().description("应用");
    UiObject object=new UiObject(selector);
    object.click();


    //包含匹配:
    UiSelector selector1=new UiSelector().descriptionContains("用");
    UiObject object1=new UiObject(selector1);
    object1.click();


    //正则匹配:
    UiSelector selector2=new UiSelector().descriptionMatches("应.*");
    UiObject object2=new UiObject(selector2);
    object2.click();


    //起始匹配:
    UiSelector selector3=new UiSelector().descriptionStartsWith("应");
    UiObject object3=new UiObject(selector3);
    object3.click();

}

 

六、对象搜索-类名与包名

1.类名属性定位:

返回值API说明
UiSelectorclassName(String className)类名
UiSelectorclassNameMatches(String regex)正则类名
  • 快速书写方式:

 

(1)class.getName(推荐书写方式)
(2)完整类名方式:android.widger.LinearLayout
(3)正则方式
(4)常量方式

  • 例如:
public void testDemo2() throws UiObjectNotFoundException{

    //完全匹配
    UiSelector selector =new UiSelector().className("android.view.View")
    .instance(3);//instance(3)表示界面上从上到下第4-1个view
    UiObject object=new UiObject(selector);
    object.click();


    //正则匹配
    UiSelector selector =new UiSelector().classNameMatches(".*View")
    .instance(4);//instance(3)表示界面上从上到下第5-1个view
    UiObject object=new UiObject(selector);
    object.click();     


    //class.getName输入方式
    UiSelector selector =new UiSelector().className(View.class.getName())
    .instance(3);//instance(3)表示界面上从上到下第5-1个view
    UiObject object=new UiObject(selector);
    object.click();
    }

 

2.包名属性定位

返回值API说明
UiSelectorpackageName(String name)包名
UiSelectorpackageNameMatches(String regex)包名正则
  • 例如:
public void testDemo3() throws UiObjectNotFoundException{

    UiSelector selector =new UiSelector().packageName("com.android.deskclock");
    UiObject object=new UiObject(selector);
    object.click();

}

 

七、对象搜索-索引与实例

1.索引与实例说明

1)索引index:指在同级中的编号,在兄弟类中的主键的编号
2)实例instance:整个布局文件中的编号,同一个类(比如6.2中的view类)的同级编号

2.索引与实例属性定位对象

返回值API说明
UiSelectorindex(int index)索引
UiSelectorinstance(int instance)实例
  • 例如:
public void testIndex() throws UiObjectNotFoundException{


    //index
    UiSelector selector =new UiSelector().className("android.widget.ImageButton").index(1);
    UiObject object=new UiObject(selector);
    object.click();

    UiDevice.getInstance().pressBack();

    //instance
    UiSelector selector1 =new UiSelector().className("android.widget.ImageButton").instance(2);
    UiObject object1=new UiObject(selector1);
    object1.click();

    }

 

八、对象搜索-特殊属性与节点

1.特殊属性定位对象

返回值API说明
UiSelectorchecked(booleean val)选择属性
UiSelectorclickable(boolean val)可点击属性
UiSelectorenabled(boolean val)enabled属性
UiSelectorfocusable(boolean val)焦点属性
UiSelectorfocused(boolean val)当前焦点属性
UiSelectorlongClickable(boolean val)长按属性
UiSelectorscrollable(boolean val)滚动属性
UiSelectorselected(boolean val)背景选择属性
  • 例如:
public void testDemo4() throws UiObjectNotFoundException{


    //checkable[开启wifi(界面默认在设置界面的情况下),由于有wifi和蓝牙两个可点击属性,instance定位]
    UiObject swtitichObj=new UiObject(new UiSelector().checkable(true).instance(0));
    swtitichObj.click();


    //checked[关闭了wifi(界面默认在设置界面的情况下)]
    UiObject swtitichObj=new UiObject(new UiSelector().checked(true).instance(0));
    swtitichObj.click();


    //enable[界面默认在无编辑的信息框,buttom为发送按钮]
    UiObject send=new UiObject(new UiSelector().enabled(false));                
    System.out.println(send.getClassName());//获取并输出这个属性的类名


    //focused[在发送消息界面,光标默认停放位置在联系人或信息框]
    UiObject focusedObj=new UiObject(new UiSelector().focused(true));
    focusedObj.setText("Jian");//输入字符"Jian"


    //longClickable[界面默认位置为桌面首页,多条件定位]
    UiObject longclick=new UiObject(new UiSelector().longClickable(true).index(4));
    longclick.click();


    //scrollable[界面默认位置为文件管理器界面]
    UiScrollable scrollable=new UiScrollable(new UiSelector().scrollable(true));
    scrollable.scrollForward();//向下滚动一下
    scrollable.scrollBackward();//向上滚动一下        

}

 

2.节点属性定位对象

返回值API说明
UiSelectorchildSelector(UiSelector selector)从当前类中往下递归找符合条件的子类组件
UiSelectorformPrent(UiSelector selector)从父类往下递归找符合条件的组件
  • 例如:
public void testDemo5() throws UiObjectNotFoundException{

    //childSelector[界面停留在文件管理界面]例一:
    UiScrollable scrollable=new UiScrollable(new UiSelector().scrollable(true)
    .childSelector(new UiSelector().text("Android")));
    scrollable.click();     
    //childSelector[界面停留在文件管理界面]例二:
    UiObject focusedObj=new UiObject(new UiSelector().childSelector(new UiSelector().text("Android")));
    focusedObj.click();


    //formPrent[界面停留在文件管理界面]先定位父类再定位主类
    UiObject PrentObj=new UiObject(new UiSelector()
    .resourceId("com.cyanogenmod.filemanager:id/navigation_view_details_item")
    .fromParent(new UiSelector().className("android.widget.LinearLayout").index(1)));//先定位父类再定位主类
    PrentObj.click();

}

 


九、对象搜索-资源ID(推荐使用)

1.资源ID说明

1)资源ID属性:
每一个组件都会的编号,也就是资源ID
2)对应Android属性:
XML文件下的Android:ID属性

2.资源ID定位对象

返回值API说明
UiSelectorresourceId(String id)资源ID
UiSelectorresourceIdMatches(String regex)资源ID正则
  • 例如:
public void testDemo6() throws UiObjectNotFoundException{

    //resourceId(String id)
        //定位不同ID的组件
    UiObject resoursId=new UiObject(new UiSelector().resourceId("com.cyanogenmod.filemanager:id/ab_filesystem_info"));  
    resoursId.click();
    //定位相同ID的组件
    UiObject resoursId1=new UiObject(new UiSelector()
    .resourceId("com.cyanogenmod.filemanager:id/navigation_view_details_item")
    .index(3));//通过增加多个条件来定位(这里使用index)     
    resoursId1.click();


    //resourceIdMatches(String regex)
    UiObject resoursId2=new UiObject(new UiSelector().resourceIdMatches(".*/navigation_view_details_item").index(3));       
    resoursId2.click();
}

 

转载于:https://www.cnblogs.com/JianXu/p/5158396.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值