一、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. 算法笔记(c++)--求一个数的所有质数因子

    算法笔记(c++)--求一个数的所有质数因子 先贴题目: 这题不难,恶心在理解上面.最后看评论知道了怎么回事: 2*2*3*3*5=180 按照这逻辑的话应该输入的数由一系列质数相乘出来,所以每次找到 ...

  2. Python常用模块之Pygame(手册篇:首页)

    Pygame手册官方网址:http://www.pygame.org/docs/ Pygame首页 说明文档: 自述 关于Pygame的基本信息,它是什么,谁参与了以及在哪里找到它. 安装 在几个平台 ...

  3. spring-boot-mybatis搭建

    写在开始 mybatis是一个持久化框架,支持手动sql.存储过程.高级映射.mybatis支持XML方式或注解方式将POJO与数据库表间建立映射. maven依赖 spring-boot.mysql ...

  4. Immutable 常用API简介

    本文主要整理了Immutable.js常用API的使用. Immutable 是什么? 关于Immutable的定义,官方文档是这样说的: Immutable data encourages pure ...

  5. C++ STL 优先队列 priority_queue 详解(转)

    转自https://blog.csdn.net/c20182030/article/details/70757660,感谢大佬. 优先队列 引入 优先队列是一种特殊的队列,在学习堆排序的时候就有所了解 ...

  6. Alpha发布用户使用报告【欢迎来怼】

    目录 用户统计表 部分用户评论截图 用户统计图 总结 一.用户统计表 目前,博客园安卓版的用户已达到11位.为了采集到更加客观公正的用户评价,并没有将团队内部人员的评价统计进来.同时,为了更好地保护用 ...

  7. Linux 环境下svn 服务器搭建

    可使用自己下载的svn安装包,但要安装相关依赖包,yum 安装源提供的稳定版本svn 1.yum -y install subversion 2.创建本地库 mkdir -p /var/svn svn ...

  8. 软工1816·Alpha冲刺(10/10)

    团队信息 队名:爸爸饿了 组长博客:here 作业博客:here 组员情况 组员1(组长):王彬 过去两天完成了哪些任务 协助完成前端各个页面的整合 协助解决前端操作逻辑存在的问题 完成前端的美化,使 ...

  9. 字典树---2001 POJ Shortest Prefixes(找最短前缀)

    做的第一道字典树的题,算比较水的: -->>>:传送门 代码: #include <stdio.h> #include<stdlib.h> #define M ...

  10. Oracle win64_12g 安装

    1.Oracle win64_12g 安装 1.下载安装包:这里需要自己注册一下,然后就可以登录下载软件了. 下载地址: http://www.oracle.com/technetwork/datab ...