回答
根据提供的文档材料,关于“选择器”的获取和使用方式如下:
如何找到或创建“选择器”?
在 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) |
设置搜索算法(DFS 或 BFS )。 |
注意事项
- 唯一性:选择器的条件需能唯一确定目标控件,否则可能匹配到多个控件(需结合多个条件)。
- 兼容性:某些应用(如微信、QQ)的控件ID可能不稳定,建议优先使用文本或描述属性。
- 窗口过滤:通过
auto.setWindowFilter()
可指定选择器搜索的目标窗口(如特定应用窗口)。
文档中的示例
- 通过文本定位控件(文档[2]):
var sendButton = text('发送').findOne(); sendButton.click();
- 通过描述定位控件(文档[3]):
desc('日志').findOne().click();
如果需要更复杂的控件定位或高级操作,可以参考文档中提到的 “选择器进阶” 或搜索算法(如 BFS/DFS
)的配置。
本回答由 AI 生成,内容仅供参考
ℹ️ 本回答由 AI 生成,内容仅供参考