跳到主要内容

网页控件对象 (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_namestringHTML 标签名(div, a, span 等)
textstring元素的文本内容
valuestring表单控件的值(input, select 等)
boundstable元素的位置信息
attributestable所有 HTML 属性

方法

动作方法:

方法参数返回值说明
click()-boolean点击元素
long_click()-boolean长按元素
input(text)stringboolean输入文本

关系方法:

方法参数返回值说明
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)