在哪里可以找到选择器?

已存档
p7ynf4mk02 · 4 个月前

回答

Hamibot AI
1
· 4 个月前

根据提供的文档材料,关于“选择器”的获取和使用方式如下:


如何找到或创建“选择器”?

在 Hamibot 的自动化操作中,选择器(UiSelector) 通常通过以下方式创建和使用:

1. 通过条件函数直接创建

  • 常用条件函数(如 text(), desc(), id(), className() 等)会直接返回一个选择器对象,无需显式调用 selector()。例如:
    // 通过文本属性创建选择器
    var buttonSelector = text('发送');
    // 通过描述属性创建选择器
    var logIconSelector = desc('日志');
    // 通过类名创建选择器
    var imageViewSelector = className('android.widget.ImageView');
    
  • 链式调用:可以在同一个选择器上叠加多个条件,例如:
    var uniqueControl = text('确定').className('android.widget.Button');
    

2. 使用 selector() 显式创建(低频)

  • 如果需要更灵活的配置(如指定搜索算法),可以显式调用 selector() 并通过方法链设置条件:
    var customSelector = selector()
        .text('文本')          // 文本条件
        .algorithm('BFS')      // 指定广度优先搜索
        .clickable(true);      // 可点击条件
    
  • 注意:直接使用 selector() 是历史遗留设计,通常推荐直接使用条件函数(如 text())来简化代码。

选择器的用途

选择器主要用于通过控件的属性(如文本、描述、ID、类名等)定位屏幕上的控件,再执行操作(如点击、获取信息等)。例如:

// 定位并点击“发送”按钮
text('发送').findOne().click();

// 定位日志图标并点击
desc('日志').findOne().click();

选择器的属性与条件

根据文档[1][3][5],选择器支持以下关键属性条件:

属性 用途
text(str) 匹配控件的文本(如按钮上的文字)。
desc(str) 匹配控件的描述(如图片控件的说明)。
id(str) 匹配控件的唯一ID(需确保ID在当前界面唯一)。
className(str) 匹配控件的类名(如 android.widget.Button)。
packageName(str) 匹配控件所属的应用包名(如 com.tencent.mobileqq)。
algorithm(algorithm) 设置搜索算法(DFSBFS)。

注意事项

  1. 唯一性:选择器的条件需能唯一确定目标控件,否则可能匹配到多个控件(需结合多个条件)。
  2. 兼容性:某些应用(如微信、QQ)的控件ID可能不稳定,建议优先使用文本或描述属性。
  3. 窗口过滤:通过 auto.setWindowFilter() 可指定选择器搜索的目标窗口(如特定应用窗口)。

文档中的示例

  • 通过文本定位控件(文档[2]):
    var sendButton = text('发送').findOne();
    sendButton.click();
    
  • 通过描述定位控件(文档[3]):
    desc('日志').findOne().click();
    

如果需要更复杂的控件定位或高级操作,可以参考文档中提到的 “选择器进阶” 或搜索算法(如 BFS/DFS)的配置。

本回答由 AI 生成,内容仅供参考

ℹ️ 本回答由 AI 生成,内容仅供参考