2.UiSelector API 详细介绍

一、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个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说明
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{//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说明
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属性:
每一个组件都会的编号,也就是资源ID
2)对应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();
}

 

转载于:https://www.cnblogs.com/JianXu/p/5158396.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404752.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

断路器操作机构分合闸线圈电流特征曲线特点

1、特征量描述 高压断路器操作机构线圈电流波形可以反映分合闸电磁铁本身及所控制的锁闩或阀门以及与之相连的开关操动机构、辅助触点在操作过程中的工作情况。操作机构分合闸过程的工作原理相同,其线圈电流波形也类似。以下是典型的特征电流曲线示意图&#xff1a…

几种仪表放大器电路总结

一般模拟信号在进入A/D采样前,需要先进行信号调理,模拟信号放大部分需要着重设计。放大电路采用仪表放大器,其能有效抵抗共模干扰且具有很高的输入电阻,有效提高信噪比。 以下总结常用的仪表模拟放大电路设计。 1、单运放仪表放…

IEEE1459功率理论计算方法

0、ADC采集5通道电压(ABCN地),4通道电流采用每周波1024点同步采样 1、计算各相(Ua、Ub、Uc)、线电压(Uab、Uac、Ubc),相电流(Ia、Ib、Ic) 2、计算各相电压、…

使用Visio 2000逆向工程将代码转换为UML图表

From: http://www.sudu.cn/info/html/website/20080508/307109.html 摘要:Microsoft Visio 2000 Professional Edition 和 Enterprise Edition 包含通过逆向工程将 Microsoft Visual C、Microsoft Visual Basic 和 Microsoft Visual J 代码转换为统一建模语言 (UM…

POJ1177 Picture 线段树+离散化+扫描线

求最终的覆盖图形周长&#xff0c;写这种代码应该短而精确&#xff0c;差的比较远 /* Problem: 1177 User: 96655 Memory: 348K Time: 32MS Language: C Result: Accepted */ #include<iostream> #include<stdio.h> #include<stdlib.h>…

DA模拟量控制外接600V高压直流源-设计分析

一、STM32 12位AD DA线性度测试 配置STM32 DA为12bit输出&#xff0c;AD为12bit检测&#xff0c;测试AD和DA的线性度与误差。DAC从0到2.49V步进1mV。ErrorDAC 为标准值减去 ADC的测量值。 板子的Vref2.5V&#xff0c;ADC和DAC的极限为2.5V&#xff0c;测试时直接用杜邦线连接…

使用 rose 将 c++代码转换为 uml 类图

From: http://www.cppblog.com/prayer/archive/2009/12/24/103954.html 阅读本文章&#xff0c;你需要对 uml 有简单的了解&#xff0c;懂得以下术语&#xff1a; 类图( class diagram ) 即 c 中的 class 。 聚合( Aggregation ) 即我们c中的引用。表现为 class 头文件中的…

android中的AIDL进程间通信

关于IPC应该不用多介绍了&#xff0c;Android系统中的进程之间不能共享内存&#xff0c;那么如果两个不同的应用程序之间需要通讯怎么办呢&#xff1f;比如公司的一个项目要更新&#xff0c;产品的需求是依附于当前项目开发一个插件&#xff0c;但是呢这个插件功能以及界面比较…

某测试仪控制系统的设计方案--ARM+FPGA+NIOS

一、系统要求 控制功能&#xff1a;600V直流电源模块控制63dB程控衰减器触摸屏高频毫伏表示波器USB存储FAR计数整形阈值调节。 功能要求&#xff1a; 检测高压电源的Vref控制高压电源的Vset控制光脉冲幅度控制阈值计数幅度存储测量数据触摸屏通信示波器通信高频毫伏表通信光…

QT实现图像处理-傅立叶变换、傅立叶反变换、平滑、锐化与模板匹配

From: http://www.cnblogs.com/qytan36/archive/2010/04/04/1704226.html 实验环境&#xff1a; 1&#xff0c;Linux操作系统 2&#xff0c;QT3编程开发环境 3&#xff0c;C编程语言 傅立叶变换和傅立叶反变换 1.1. 主要源代码 readImage() 从图像中读取数据 writeImage() 往图…

Java finally语句到底是在return之前还是之后执行?

网上有很多人探讨Java中异常捕获机制try...catch...finally块中的finally语句是不是一定会被执行&#xff1f;很多人都说不是&#xff0c;当然他们的回答是正确的&#xff0c;经过我试验&#xff0c;至少有两种情况下finally语句是不会被执行的&#xff1a; &#xff08;1&…

TLV5618 双路12位DAC 模拟SPI驱动

一、TLV65618芯片 TLV5618A 带掉电功能 2.7V-5.5V&#xff0c;低功耗双路 12 位数模转换器 特点 ●双路 12 位电压输出 DAC ●可编程调节转换时间 - 快速模式 3μs - 低速模式 10μs ●兼容 TMS320 和 SPI 串行接口 16位串行接口包含4位控制和12位数据。 二、驱动代码 采用模…

python对json的相关操作

From: http://www.cnblogs.com/coser/archive/2011/12/14/2287739.html 什么是json&#xff1a; JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3r…

UIbutton

第一、UIButton的定义 UIButton *button[[UIButton buttonWithType:(UIButtonType); 能够定义的button类型有以下6种&#xff0c; typedef enum { UIButtonTypeCustom 0, 自定义风格 UIButtonTypeRoundedRect, 圆角矩形 UIButtonTypeDetailDisclosure, 蓝色小箭头按钮&#xf…

MAX535 单路13位DAC 模拟SPI驱动

一、MAX535 max535是低功耗、13位、电压输出DAC&#xff0c;采用串行接口和MAX封装。MAX535通过单个5V/3.3V电源工作&#xff0c;仅需要280A电流工作。 MAX535/MAX5351适用于广泛的应用&#xff0c;包括工业过程控制。其他功能包括软件关机和开机复位。 DAC寄存器可以独立更…

云服务器开启TCP Server 客户端无法连接的解决方法

一、问题描述 华为云服务器运行TCPServer后&#xff0c;等待客户端连接&#xff0c;客户端一直无法连接到服务器。经过测试&#xff0c;客户端可以ping通服务器的地址。 客户端网络防火墙已经完全放开。 二、解决办法 1、查看云服务器端的安全组&#xff0c;是否放开该端口。…

STM32CubeMx HAL库使用硬件IIC读写AT24C02

介绍使用硬件IIC接口读写AT24C02&#xff0c;STM32自带硬件IIC&#xff0c;比较好用&#xff0c;没必要千篇一律的使用模拟IIC。作为一个IIC的使用例子&#xff0c;可以适当修改用于其他IIC接口设备通信控制。 一、测试环境 STM32F407CubeMx&#xff08;6.1.1&#xff09;MDK…

第十篇 PO核心功能及流程详解

详见链接&#xff1a;http://bbs.erp100.com/thread-272866-1-1.html1. P2P lifecycleP2P是procure to pay的缩写&#xff0c;p2p循环值得就是采购到付款的周而复始&#xff0c;循环往复的过程。主要包含六个大的环节&#xff0c;需求&#xff08;demand&#xff09;&#xff0…

STM32F407 CubeMx使用定时器测量信号频率 分辨率0.001Hz

一、需求 使用STM32F407 测量外部输入方波信号的周期&#xff0c;信号变化范围&#xff1a;45HZ~55HZ&#xff0c;测量分辨率0.001HZ。 二、配置 stm32Cubemx&#xff1a;version 6.1.1HAL库&#xff1a;1.25.2MDK&#xff1a;5.34C Compiler&#xff1a;ARMCC 6.16 三、分…

中移M5310A NBIoT模组通信测试命令

总结一下中移M5310A NBIoT模组的常用测试命令&#xff0c;这个命令是个脚本&#xff0c;可以编辑&#xff0c;在自己开发的串口软件上可用&#xff0c;有需要的请留言。 脚本是.ini格式的文件&#xff0c;可以直接编辑文件然后加载到脚本区。字段用\t分割。 [General] msg0don…