ID约束 (Selector.id)
Selector.id
声明
node.selector():id(resource_id)
参数
| 参数 | 类型 | 说明 |
|---|---|---|
| resource_id | string | 控件的 resource-id,支持正则表达式 |
返回值
| 类型 | 说明 |
|---|---|
| Selector | 选择器对象(支持链式调用) |
说明
通过 resource-id 属性约束控件。
什么是 resource-id:
- Android 开发者在布局文件中为控件定义的唯一标识符
- 格式通常为
包名:id/控件名,如com.example:id/btn_login - 是定位控件最精确、最稳定的方式之一
匹配规则:
- 默认支持正则表达式匹配
- 完整匹配:
id("com.example:id/btn_login") - 部分匹配:
id(".*btn_login")或id(".*login.*") - 仅匹配控件名:
id("btn_login")(不含包名时自动模糊匹配)
适用场景:
- 定位有明确 ID 的控件(推荐首选方式)
- 同类型控件需要精确区分时
- 控件文本可能变化但 ID 固定时
注意事项:
- 部分控件没有 resource-id(值为空)
- 某些 APP 会动态生成 ID,每次启动可能不同
- 可通过
node.dump()或开发者工具查看控件的实际 ID - 建议优先使用 ID 定位,其次考虑 text、desc 等属性
待实现
该接口正在开发中。
示例
local node = require("node")
-- 完整 ID
local n = node.selector():id("com.example:id/search_bar_text"):find()
-- 正则匹配
local n = node.selector():id(".*search.*"):find()
AScript 对应
# AScript (Python)
from ascript.android.node import Selector
node = Selector().id("com.aojoy.airscript:id/search_bar_text").find()