2.UiSelector API 详细介绍
一、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个viewUiObject object=new UiObject(selector);object.click();//正则匹配UiSelector selector =new UiSelector().classNameMatches(".*View").instance(4);//instance(3)表示界面上从上到下第5-1个viewUiObject object=new UiObject(selector);object.click(); //class.getName输入方式UiSelector selector =new UiSelector().className(View.class.getName()).instance(3);//instance(3)表示界面上从上到下第5-1个viewUiObject 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{//indexUiSelector selector =new UiSelector().className("android.widget.ImageButton").index(1);UiObject object=new UiObject(selector);object.click();UiDevice.getInstance().pressBack();//instanceUiSelector 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(); }
转载于:https://www.cnblogs.com/JianXu/p/5158396.html
2.UiSelector API 详细介绍相关推荐
- 5.UiScrollable API 详细介绍
Tip: 1.扫动过程中如果界面停留在滚动条的中间部分会先回到起点再进行滚动 2.扫动过程中设置的步长长短决定划过内容的多少,步长越长滑过的内容就越少:步长越短划过的内容就越长 一.UiScrolla ...
- 4.UiCollection API 详细介绍
一.UiCollection类介绍 UiCollection类两大功能:从集合中查找对象:获取某种搜索条件组件的数量 1.UiCollection类说明 1)UiCollection是UiObject ...
- 腾讯微博android sdk,腾讯微博java(android)sdk新增微博api详细介绍
本文主要介绍腾讯微博android sdk中新增微博有关的8个接口,以及使用的示例代码 注意:以下所有的api示例代码都需要先新建QqTSdkService类对象qqTSdkService并初始化,见 ...
- 腾讯微博android sdk,腾讯微博java(android)sdk时间线api详细介绍
本文主要介绍腾讯微博android sdk中时间线有关的20个接口,以及正常获取及翻页的使用的示例代码及部分特例 注意:以下所有的api示例代码都需要先新建QqTSdkService类对象qqTSdk ...
- html游戏全屏代码,HTML5全屏(Fullscreen)API详细介绍
在越来越真实的web应用程序中,JavaScript也变得越来越给力. FullScreen API 是一个新的JavaScript API,简单而又强大. FullScreen 让我们可以通过编程的 ...
- html谷歌全屏像素,HTML5全屏(Fullscreen)API详细介绍
在越来越真实的web应用程序中,JavaScript也变得越来越给力. FullScreen API 是一个新的JavaScript API,简单而又强大. FullScreen 让我们可以通过编程的 ...
- html5 自动设置全屏,HTML5全屏(Fullscreen)API详细介绍
在越来越真实的web应用程序中,JavaScript也变得越来越给力. FullScreen API 是一个新的JavaScript API,简单而又强大. FullScreen 让我们可以通过编程的 ...
- 机器学习算法——详细介绍 集成学习,以及什么是Bagging、随机森林、Boosting、XGBoost
目录 一.集成学习算法简介 1.什么是集成学习 2.机器学习的两个核心任务 3.集成学习中boosting和Bagging 4.小结 二.Bagging和随机森林 1.Bagging集成原理 2.随机 ...
- arcgis api 4.13 —— Layer详细介绍
arcgis api 4.13 Layer详细介绍 近日,esri官方更新了arcgis api4.12版本,接下来我将就此API做一个大概的梳理.本篇文章是关于图层(layer)的一个大概.主要分为 ...
最新文章
- javascript php 区别,PHP 或者 JavaScript 这些弱类型 的|| 和 | 的区别, 附代码;
- VS2005工程由Pocket PC 2003 SDK转为WINCE6.0 SDK的问题
- ESP8266编译脚本之四
- java多线程思维导图
- “unauthorized: authentication required” -- openshift3.9 docker push 报错
- Zookeeper深入系列-从Zookeeper中深入JMX原理
- 使用代码更新 UIVersion 属性
- vi/vim使用进阶: quickfix
- SpringBoot+Quartz实现动态可配定时任务(动态定时任务)
- 金融信息破局刍议【4】长尾效应
- 纹波(ripple)--学习笔记
- C#DGV选择shift多选
- 最全的基于c++的serialport.cpp与serialport.h类文件(解析版)
- 微信小程序01---小程序初始
- 聊聊云原生时代湖仓一体建设
- Java反序列化json内存溢出_fastjson反序列化使用不当致使内存泄露
- python.txt文件的写入和追加
- 快来跟我一起学 React(Day8)
- ANSYS16.0结构断裂力学 裂纹扩展视频教程
- Linux学习之文本查找编辑替换命令