获取控件树 (Selector.dump)
Selector.dump
声明
json_str = Selector.dump()
json_str = Selector.dump(mode)
参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| mode | number | 否 | 检索模式:0=普通模式(默认),1=复杂模式,2=简单模式过滤系统控件,3=复杂模式过滤系统控件 |
返回值
| 类型 | 说明 |
|---|---|
| string | JSON 数据,可转换为 Lua table |
说明
获取当前界面的完整控件树,返回 JSON 格式的树状结构。
工作原理:
- 通过 AccessibilityService 获取当前窗口的所有控件信息
- 将控件树序列化为 JSON 字符串
- 包含每个控件的所有属性(id、text、type、rect 等)
检索模式说明:
0- 普通模式,获取完整控件树(默认)1- 复杂模式,获取更详细的控件信息2- 简单模式 + 过滤系统控件(推荐用于分析 APP 界面)3- 复杂模式 + 过滤系统控件
适用场景:
- 分析界面结构,了解控件层级关系
- 调试定位问题,查看控件实际属性值
- 导出界面信息供后续分析
- 开发脚本前的界面探索
输出内容包含:
- 控件的所有基本属性(id、text、desc、type 等)
- 控件的状态属性(clickable、enabled、visible 等)
- 控件的位置信息(rect: left、top、width、height)
- 控件的层级关系(children 数组)
注意事项:
- dump() 是静态方法,直接通过类调用
- 返回的 JSON 可能很大,建议保存到文件查看
- 控件树会随界面变化而变化
- 某些加密或保护的应用可能无法获取完整信息
待实现
该接口正在开发中。
示例
local node = require("node")
local json = require("json")
-- 获取控件树 JSON 数据
local res = Selector.dump()
print(res) -- JSON 字符串
if res then
-- 转换为 table 对象
local obj = json.decode(res)
print(obj)
end
-- 保存到文件
file.writes("/sdcard/ui_dump.json", res)
AScript 对应
# AScript (Python)
import json
from ascript.android.node import Selector
res = Selector.dump()
print(res) # JSON 字符串
if res:
obj = json.loads(res)
print(obj)