网页控件对象 (WebNode)
WebNode 网页控件对象
通过 node.web_selector():find() 或 node.web_selector():find_all() 获得此对象。
技术原理:
WebNode 是 AccessibilityService 返回的 AccessibilityNodeInfo 对象的封装:
- 属性(tag_name、text、value、bounds、attributes)来自 AccessibilityNodeInfo
- 动作方法(click、long_click、input)通过 AccessibilityNodeInfo.performAction() 实现
- 关系方法(parent、child、brother)通过遍历 AccessibilityNodeInfo 节点树实现
声明
local node = require("node")
local window = node.web_window("http://www.example.com")
local n = node.web_selector(window):text("登录"):find()
属性
| 属性 | 类型 | 说明 |
|---|---|---|
| tag_name | string | HTML 标签名(div, a, span 等) |
| text | string | 元素的文本内容 |
| value | string | 表单控件的值(input, select 等) |
| bounds | table | 元素的位置信息 |
| attributes | table | 所有 HTML 属性 |
方法
动作方法:
| 方法 | 参数 | 返回值 | 说明 |
|---|---|---|---|
click() | - | boolean | 点击元素 |
long_click() | - | boolean | 长按元素 |
input(text) | string | boolean | 输入文本 |
关系方法:
| 方法 | 参数 | 返回值 | 说明 |
|---|---|---|---|
parent(...) | 可变参数 | WebNode/table | 获取父元素 |
child(...) | 可变参数 | WebNode/table | 获取子元素 |
brother(...) | 可变参数 | WebNode/table | 获取兄弟元素 |
关系方法参数说明:
child(1)- 第1个子元素child(-1)- 倒数第1个子元素child(1.3)- 第1到第3个子元素(范围)brother(0.1)- 下一个兄弟元素brother(-0.1)- 上一个兄弟元素parent(2)- 爷爷元素(第2层父元素)
返回值说明: 结果为单个时返回 WebNode,结果为多个时返回 table 列表
待实现
该接口正在开发中。
示例
local node = require("node")
local window = node.web_window("http://www.example.com")
local n = node.web_selector(window):text("登录"):find()
if n then
print("标签:", n.tag_name)
print("文本:", n.text)
print("值:", n.value)
-- 执行点击
n:click()
end
AScript 对应
# AScript (Python)
from ascript.android.node import WebSelector
from ascript.android.ui import WebWindow
window = WebWindow("http://www.example.com")
node = WebSelector(window).text("登录").find()
if node:
print("标签:", node.tag_name)
print("文本:", node.text)