选择器 (Selector)
Selector 选择器
声明
local node = require("node")
-- 创建选择器,简单模式检索(默认)
local selector = Selector()
-- 创建选择器,复杂模式检索
local selector = Selector(1)
-- 使用 xpath 方式全局检索
local selector = Selector(nil, "//TextView[@text='开发者']")
参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| mode | number | 否 | 检索模式:0=普通模式(默认),1=复杂模式,2=简单模式过滤系统控件,3=复杂模式过滤系统控件,6=HID控件模式,9=Root模式 |
| xpath | string | 否 | 使用 xpath 方式全局检索 |
说明
控件查找器,通过约束方法和查询方法,来获取屏幕中满足条件的控件。
工作原理:
- 基于 Android AccessibilityService(无障碍服务)
- 通过系统提供的 AccessibilityNodeInfo 获取控件树
- 遍历控件树,根据约束条件筛选匹配的控件
- 无需 root 权限,但需要用户开启无障碍服务
检索模式说明:
0- 普通模式(默认),检索当前窗口所有控件1- 复杂模式,支持更多属性约束2- 过滤系统控件标志,可与其他模式组合使用(如0|2)6- HID 控件模式9- Root 模式
使用场景:
- 自动化操作 App 界面控件
- 获取界面元素信息
- 模拟用户点击、输入等操作
注意事项:
- 首次使用需引导用户开启无障碍服务
- 部分 App 可能禁用无障碍访问
- ID 属性可能随 App 版本变化,建议优先使用 text 或 desc
- 使用
find()前应添加足够的约束条件,避免性能问题
待实现
该接口正在开发中。
示例
local node = require("node")
-- 简单模式,过滤系统控件
local selector = Selector(0 | 2)
-- 复杂模式,过滤系统控件
local selector = Selector(1 | 2)
-- xpath 检索
local node = Selector(nil, "//TextView[@text='开发者']"):find()
AScript 对应
# AScript (Python)
from ascript.android.node import Selector
selector = Selector() # 简单模式
selector = Selector(1) # 复杂模式
selector = Selector(0|2) # 简单模式,过滤系统控件
Selector(xpath="//TextView[@text='开发者']")