跳到主要内容

选择器 (Selector)

Selector 选择器

声明

local node = require("node")

-- 创建选择器,简单模式检索(默认)
local selector = Selector()

-- 创建选择器,复杂模式检索
local selector = Selector(1)

-- 使用 xpath 方式全局检索
local selector = Selector(nil, "//TextView[@text='开发者']")

参数

参数类型是否必填说明
modenumber检索模式:0=普通模式(默认),1=复杂模式,2=简单模式过滤系统控件,3=复杂模式过滤系统控件,6=HID控件模式,9=Root模式
xpathstring使用 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='开发者']")