网页窗口 (WebWindow)
WebWindow 网页窗口
声明
node.web_window(url)
参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| url | string | 是 | 目标网页 URL 或 URL 片段 |
返回值
| 类型 | 说明 |
|---|---|
| WebWindow | Web 窗口对象,用于 WebSelector |
说明
创建一个 Web 窗口对象,作为 WebSelector 查找网页控件的上下文。
技术原理:
Web 控件功能**完全基于 Android AccessibilityService(辅助功能服务)**实现:
- WebView 控件会将其内部的 DOM 结构暴露给 AccessibilityService
- 通过 AccessibilityService 可以获取到网页元素的标签、文本、属性等信息
- 所有的查找和操作都是通过 AccessibilityService API 完成的
- 不依赖 Chrome DevTools Protocol 或其他浏览器调试协议
工作流程:
- 通过 URL 匹配当前 AccessibilityService 节点树中的 WebView
- WebWindow 对象代表这个 WebView 的无障碍节点
- WebSelector 在这个 WebView 的子节点树中进行查找
使用场景:
- 操作 App 内嵌的 H5 页面
- 自动化 WebView 中的网页表单
- 获取网页元素信息
注意事项:
- URL 参数支持部分匹配
- WebView 需要已加载完成
- WebView 必须开启无障碍支持(大多数 App 默认开启)
- 某些经过特殊处理的 App 可能禁用 WebView 的无障碍访问
待实现
该接口正在开发中。
示例
local node = require("node")
-- 创建 Web 窗口
local window = node.web_window("http://www.example.com")
-- 使用 WebSelector 查找控件
local n = node.web_selector(window):text("登录"):find()
if n then
n:click()
end
AScript 对应
# AScript (Python)
from ascript.android.ui import WebWindow
from ascript.android.node import WebSelector
window = WebWindow("http://www.example.com")
webselector = WebSelector(window)