您的位置:首页 > 产品设计 > UI/UE

2.UiSelector API 详细介绍

2015-11-09 15:47 253 查看

一、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属性:每一个组件都会的编号,也就是资源ID2)对应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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: