JAVA_Uiautomator小记之 UiSelector

UiSelector用于获取操作对象用于后续的操作,UiSelector 获取对象一般依具备两类,一类是控件属性,一类是控件层级关系。要想获取对象,就需要先了解一下,有哪些对象的属性可以供我们进行获取。

  1. index    **为同一级别组件的编号
  2. instance   **针对的是整个页面的同一类控件的序号
  3. text      **  文本
  4. class**  类
  5. package    **  包名
  6. Content-desc   ** 内容可描述
  7. checkable** 可选
  8. checked   ** 选中
  9. clickable     **可点击
  10. enabled        **  可用
  11. focusable       ** 可获得焦点
  12. focused        ** 获得焦点
  13. Scrollable      ** 可滑动
  14. Long-clickable     ** 可长点击
  15. Password       ** 隐藏明文
  16. Selected       ** 选中
  17. Bounds      ** 坐标

 

之后我们将查找的方法进行一下分类:

  • 使用文本来匹配控件
 返回值 API 说明
 UiSelector text(String text) 文本
 UiSelector textContains(String text) 文本包含
 UiSelector  textMatches(String text) 文本正则
 UiSelector textStartsWith(String text) 文本起始匹配
  • 使用描述来匹配控件
 返回值 API 说明
  UiSelector description(String desc) 描述
  UiSelector descriptionContains(String desc) 描述包含
  UiSelector descriptionMatches(String regex) 描述正则
  UiSelector descriptionStartsWith(String desc) 描述起始字符匹配
  • 使用类名来匹配控件
 返回值 API 说明
 UiSelector className(String className) 类名
 UiSelector classNameMatches(String className) 类名正则
  • 使用包名来匹配控件
 返回值 API 说明
 UiSelector packageName(String name) 包名
 UiSelector oackageNameMatches(String  regex) 包名正则
  • 使用资源ID来匹配控件
 返回值 API 说明
 UiSelector resourceId(String id) 资源ID
 UiSelector resourceIdMatches(String regex) 资源ID正则
  • 使用其他属性来匹配控件
 返回值 API 说明
 UiSelector checked(boolean val) 选择属性
 UiSelector clickable(boolean val) 可点击属性
 UiSelector enabled(boolean val) enable属性
 UiSelector focusable(boolean val) 焦点属性
 UiSelector focusab(boolean val) 当前焦点属性
 UiSelector longClickable(boolean val) 长按属性
 UiSelector scrollable(boolean val) 滚动属性
 UiSelector selected(boolean val) 背景选中属性
  • 使用index和instance来匹配控件
 返回值 API 说明
 UiSelector index(int index) 检索
 UiSelector instance(int instance) 实例
  • 通过层级关系匹配控件(层级关系有:父节点,子节点,同胞节点,先辈节点,后辈节点)
 返回值  API 说明
 UiSelector childSelector(UiSelector selector) 子类
 UiSelector fromParent(UiSelector selector) 父类

      通过以上的的一些基础的打底,我们在后面学习Uiautomator 2.0 中的Byselector&By  的将会更加容易。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Protobuf是一种高效的序列化协议,可以用于数据交换和数据存储。它的主要优势是大小小,速度快,可扩展性强。下面是使用Protobuf的一些小记: 1. 定义消息格式 首先,需要定义消息格式,以便Protobuf可以将数据序列化和反序列化。消息格式定义在.proto文件中,使用protobuf语言编写。例如,下面是一个简单的消息格式定义: ``` syntax = "proto3"; message Person { string name = 1; int32 age = 2; } ``` 这个消息格式定义了一个名为Person的消息,包含两个字段:name和age。 2. 生成代码 一旦消息格式定义好,就可以使用Protobuf编译器生成代码。编译器将根据消息格式定义生成相应的代码,包括消息类、序列化和反序列化方法等。可以使用以下命令生成代码: ``` protoc --java_out=. message.proto ``` 这将生成一个名为message.pb.javaJava类,该类包含Person消息的定义以及相关方法。 3. 序列化和反序列化 一旦生成了代码,就可以使用Protobuf序列化和反序列化数据。例如,下面是一个示例代码,将一个Person对象序列化为字节数组,并将其反序列化为另一个Person对象: ``` Person person = Person.newBuilder() .setName("Alice") .setAge(25) .build(); byte[] bytes = person.toByteArray(); Person deserializedPerson = Person.parseFrom(bytes); ``` 这个示例代码创建了一个Person对象,将其序列化为字节数组,然后将其反序列化为另一个Person对象。在这个过程中,Protobuf使用生成的代码执行序列化和反序列化操作。 以上是使用Protobuf的一些基本步骤和注意事项,希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值