控件模块 (node)
待实现
该模块正在开发中,API 参考 AScript 设计。
模块概述
控件模块**完全基于 Android AccessibilityService(辅助功能服务)**实现,提供对 UI 控件的查找和操作能力。
技术原理
┌─────────────────────────────────────────────────────────┐
│ AccessibilityService │
│ (Android 无障碍服务) │
├─────────────────────────┬───────────────────────────────┤
│ App 原生控件 │ WebView 控件 │
│ (Button, TextView...) │ (内嵌 H5 网页) │
├─────────────────────────┼───────────────────────────────┤
│ Selector │ WebWindow + WebSelector │
│ ↓ │ ↓ │
│ Node │ WebNode │
└─────────────────────────┴───────────────────────────────┘
- App 控件:使用
Selector查找 Android 原生 UI 控件(Button、TextView、EditText 等) - Web 控件:使用
WebWindow+WebSelector查找 WebView 内嵌网页的 DOM 元素 - 两者区别:Selector 无法深入 WebView 内部,WebSelector 专门用于操作网页元素
使用流程
| 场景 | 步骤 |
|---|---|
| App 控件 | Selector() → 添加约束 → find() → 获得 Node |
| Web 控件 | WebWindow(url) → WebSelector(window) → 添加约束 → find() → 获得 WebNode |
📱 App 控件
选择器 (Selector)
- selector - 创建选择器
- selector.find - 查找控件
- selector.find_all - 查找所有
- selector.dump - 获取控件树
- selector.cache - 控件缓存
- selector.on_event - 事件监听
属性约束
- selector.id - ID 约束
- selector.text - 文本约束
- selector.desc - 描述约束
- selector.type - 类型约束
- selector.hint_text - 默认文本
- selector.package_name - 包名约束
- selector.path - 路径约束
- selector.child_count - 子控件数量
- selector.input_type - 输入类型
- selector.drawing_order - 绘制排序
- selector.depth - 控件深度
- selector.max_text_length - 最大文本长度
布尔约束
- selector.clickable - 可点击
- selector.checkable - 可选中
- selector.checked - 已选中
- selector.editable - 可编辑
- selector.enabled - 可访问
- selector.dismissable - 可取消
- selector.focusable - 可获取焦点
- selector.focused - 已获取焦点
- selector.visible - 可见
- selector.long_clickable - 可长按
关系约束
- selector.parent - 获取父控件
- selector.child - 获取子控件
- selector.brother - 获取兄弟控件
动作约束
- selector.click - 点击控件
- selector.long_click - 长按控件
- selector.slide - 滑动控件
- selector.input - 输入信息
控件对象 (Node)
- node_obj - 控件对象
- node_obj.find - 查找一个
- node_obj.find_all - 查找全部
- node_obj.parent - 获取父控件
- node_obj.child - 获取子控件
- node_obj.brother - 获取兄弟控件
- node_obj.click - 点击控件
- node_obj.long_click - 长按控件
- node_obj.slide - 滑动控件
- node_obj.input - 输入信息
🌐 Web 控件
用于操作 App 内嵌的 WebView 网页内容(H5 页面)
网页窗口 (WebWindow)
选择器 (WebSelector)
- web_selector - 创建选择器
- web_selector.find - 查找一个
- web_selector.find_all - 查找全部
约束方法
- web_selector.tag - 标签约束(div, a, span 等)
- web_selector.text - 文本约束
- web_selector.value - 值约束(input, select 等)
- web_selector.attr - 属性约束(href, class, id 等)
关系约束
- web_selector.child - 获取子元素
- web_selector.brother - 获取兄弟元素
- web_selector.parent - 获取父元素
动作约束
- web_selector.click - 点击
- web_selector.long_click - 长按
- web_selector.input - 输入文本
控件对象 (WebNode)
- web_node - 控件对象
- web_node.child - 获取子控件
- web_node.brother - 获取兄弟控件
- web_node.parent - 获取父控件
- web_node.click - 点击
- web_node.long_click - 长按
- web_node.input - 输入文本