一、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. 使用 Mesos 管理虚拟机

    摘要 为了满足渲染.基因测序等计算密集型服务的需求,UCloud 推出了“计算工厂”产品,让用户可以快速创建大量的计算资源(虚拟机).该产品的背后,是一套基于 Mesos 的计算资源管理系统.本文简要 ...

  2. ThinkPHP - 6 - 学习笔记(2015.5.4)

    解决:OneThink 站点无法被友言uyan后台识别 打开友言uyan插件功能,但OneThink站点无法被友言uyan后台检测到.页面生成的uyan代码为: <!-- UY BEGIN -- ...

  3. Beta发布-----欢迎来怼团队

    欢迎来怼项目小组—Beta发布展示 一.小组成员 队长:田继平 成员:葛美义,王伟东,姜珊,邵朔,阚博文 ,李圆圆 二.文案+美工展示 链接:http://www.cnblogs.com/js2017 ...

  4. AOP:静态代理实现方式①通过继承②通过接口

    文件结构: 添加日志: package com.wangcf.manager; public class LogManager { public void add(){ System.out.prin ...

  5. Python:Python的运行过程

    1.Python是什么 和Java以及c#一样,Python也是一门基于虚拟机的语言.熟悉Java开发的人在命令行执行一个Java程序的过程通常如下: javac hello.java java he ...

  6. C++ Primer Plus学习:第七章

    C++入门第七章:函数-C++的编程模块 函数的基本知识 要使用C++函数,必须完成如下工作: 提供函数定义 提供函数原型 调用函数 库函数是已经定义和编译好的函数,可使用标准库头文件提供原型. 定义 ...

  7. 01_Java基础_第1天(Java概述、环境变量、注释、关键字、标识符、常量)_讲义

    今日内容介绍 1.Java开发环境搭建 2.HelloWorld案例 3.注释.关键字.标识符 4.数据(数据类型.常量) 01java语言概述 * A: java语言概述 * a: Java是sun ...

  8. SQL SERVER SA密码忘记,windows集成身份验证都登录不了不怎么办

    有时候SQL SERVER 的SA强密码策略真的很烦人,不同的系统密码策略又不一样,导致经常会忘记密码,这不,这回我本机的SQL SERVER很久不用了,彻底忘了密码是什么.查了一下资料还是找到了解决 ...

  9. [C/C++] 快速幂讲解

    转自:http://www.cnblogs.com/CXCXCXC/p/4641812.html 快速幂这个东西比较好理解,但实现起来到不老好办,记了几次老是忘,今天把它系统的总结一下防止忘记. 首先 ...

  10. Windows搭建Log4Net+FileBeat+ELK日志分析系统过程

    参考博客:http://udn.yyuap.com/thread-54591-1-1.html ; https://www.cnblogs.com/yanbinliu/p/6208626.html ; ...