一、UiSelector类介绍

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

简单实例:

public void testDemo2() throws UiObjectNotFoundException{

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

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

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

}

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

1.Android常用布局

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

2.Android常用组件

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

3.Android组件属性介绍

属性值 值类型 例子
index int 0
instance int 5
class String android.widget.TextView
package String com.jian.test
Content desc String string
checkable boolean false
clecked boolean false
clickable boolean true
enabled boolean false
focusable boolean false
focused boolean false
Scrollable boolean false
Long-clickable boolean false
password boolean false
selected boolean false
bounds Rect [366,999][708,1197]

三、四种匹配关系的介绍

1.四种匹配关系介绍

完全匹配(默认)

包含匹配(Contains)

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

起始匹配(StartWith)

2.例子

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

四、节点关系介绍

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

1.文本属性定位对象

返回值 API 说明
UiSelector text(String text) 文本
UiSelector textContains(String text) 文本包含
UiSelector textMatches(String regex) 文本正则
UiSelector textStartsWith(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 说明
UiSelector description(String desc) 描述
UiSelector descriptionContains(String desc) 描述包含
UiSelector descriptionMatches(String regex) 描述正则
UiSelector descriptionStartsWith(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 说明
UiSelector className(String className) 类名
UiSelector classNameMatches(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 说明
UiSelector packageName(String name) 包名
UiSelector packageNameMatches(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 说明
UiSelector index(int index) 索引
UiSelector instance(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 说明
UiSelector checked(booleean val) 选择属性
UiSelector clickable(boolean val) 可点击属性
UiSelector enabled(boolean val) enabled属性
UiSelector focusable(boolean val) 焦点属性
UiSelector focused(boolean val) 当前焦点属性
UiSelector longClickable(boolean val) 长按属性
UiSelector scrollable(boolean val) 滚动属性
UiSelector selected(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 说明
UiSelector childSelector(UiSelector selector) 从当前类中往下递归找符合条件的子类组件
UiSelector formPrent(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 说明
UiSelector resourceId(String id) 资源ID
UiSelector resourceIdMatches(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();
}

2.UiSelector API 详细介绍的更多相关文章

  1. 7.Configurator API 详细介绍

    一.Configurator类介绍与API解释 1.Configurator类介绍 1)用于设置脚本动过的默认延时 2)功能 a.可调节两个模拟动作间的默认时间间隔 b.可调节输入文本的输入时间间隔 ...

  2. 6.UiWatcher API 详细介绍

    Tip: 1.监听器不是完能的,所以若用例需要设置监听器防止用例被打断,最好把延迟时间调高一点 2.UiDevice是不会触发监听功能的 3.监听器在方法体或者循环体中是程序还是会被打断的 4.监听器 ...

  3. 5.UiScrollable API 详细介绍

    Tip: 1.扫动过程中如果界面停留在滚动条的中间部分会先回到起点再进行滚动 2.扫动过程中设置的步长长短决定划过内容的多少,步长越长滑过的内容就越少:步长越短划过的内容就越长 一.UiScrolla ...

  4. 4.UiCollection API 详细介绍

    一.UiCollection类介绍 UiCollection类两大功能:从集合中查找对象:获取某种搜索条件组件的数量 1.UiCollection类说明 1)UiCollection是UiObject ...

  5. 腾讯微博java(android)sdk新增微博api详细介绍

    本文主要介绍腾讯微博android sdk中新增微博有关的8个接口,以及使用的示例代码 注意:以下所有的api示例代码都需要先新建QqTSdkService类对象qqTSdkService并初始化,见 ...

  6. 3.UiObejct API 详细介绍

    一.点击与长按 1.组件区域位置关系: Rect 对象代表一个矩形区域:[left,Top][ARight,Bottom](即左上角图标到右下角图标) 2.点击与长按相关API: 返回值 API 说明 ...

  7. 1.UiDevice API 详细介绍

    1.UiDevice按键与keycode使用 返回值 方法名 说明 boolean pressBack() 模拟短按返回back键 boolean pressDPadCenter() 模拟按轨迹球中点 ...

  8. 百度地图API详细介绍

    <!DOCTYPE html> <html> <head>     <meta charset="UTF-8">     <t ...

  9. HTML5全屏(Fullscreen)API详细介绍

    // 整个页面 onclick=   launchFullScreen(document.documentElement); // 某个元素 launchFullScreen(document.get ...

随机推荐

  1. spring第一章

    spring第一章 一.概述 Spring是一个开源框架,它由Rod Johnson创建.它是为了解决企业应用开发的复杂性而创建的.Spring使用基本的JavaBean来完成以前只可能由EJB完成的 ...

  2. Amazon.com 购物 信用卡预售期

    I understand and thanks for confirming. In this case, the $1.00 is not a charge.  It is an authoriza ...

  3. Linux 发展史与vm安装linux centos 6.9

    操作系统 是一个人与计算机硬件的中介. Linux操作系统 开源代码的.自由传播的类Unix操作系系统软件: 多用户.多任务.多线程.多CPU的操作系统. 服务器端.嵌入式开发.个人pc桌面,服务器领 ...

  4. react native组件的创建

    react native组件的创建 react文件加载顺序: react项目启动后,先加载index.js.在index.js中可以指向首页. import { AppRegistry } from ...

  5. React 初学

    React.createClass({}); getInitialState,this.setState({}); {}解读代码块,外层不要加引号,比如onChange={this.handleCha ...

  6. Kotlin 学习笔记(一)

    (Kotlin 学习笔记的文档结构基本按照 Java 核心技术一书的目录排列) 基本程序设计结构 数据类型 数字 类型 宽度 Double 64 Float 32 Long 64 Int 32 Sho ...

  7. Java的继承,final关键字,super关键字

    1.继承的初始化顺序: 父类—>父类的初始化对象中的属性—>父类的构造方法—>子类—>子类的初始化对象中的属性—>子类的构造方法 若有构造方法:则先执行属性,再执行构造方 ...

  8. struts通配符*的使用

    <action name="user_*" class="com.wangcf.UserAction" method="{1}"> ...

  9. Mininet介绍及安装

    什么是Mininet Mininet是由一些虚拟的终端节点(end-hosts).交换机.路由器连接而成的一个网络仿真器,它采用轻量级的虚拟化技术使得系统可以和真实网络相媲美. Mininet可以很方 ...

  10. 【final】Scrum站立会议第2次....11.20

    小组名称:nice! 组长:李权 成员:于淼  刘芳芳韩媛媛 宫丽君 项目内容:约跑app(约吧) 时间:2016.11.9    12:00——12:30 地点:传媒西楼220室 本次对fnal阶段 ...