跳到主要内容

获取控件树 (Selector.dump)

Selector.dump

声明

json_str = Selector.dump()
json_str = Selector.dump(mode)

参数

参数类型是否必填说明
modenumber检索模式:0=普通模式(默认),1=复杂模式,2=简单模式过滤系统控件,3=复杂模式过滤系统控件

返回值

类型说明
stringJSON 数据,可转换为 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)