You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Selenium获取无障碍计算属性中的输入框真实值

如何获取网页可见但HTML中未显示的输入框真实数值?

我需要获取一个输入框的数值,该数值在网页上可见,但HTML标签中仅显示"---",未包含真实数值。在Chrome开发者工具的无障碍(Accessibility)->计算属性(Computed Properties)下能找到真实数值,但常规Selenium方法无法获取。

已尝试的方法及结果

  • 方法1:获取innerHTML
print(WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//input[@id='exttemp']"))).get_attribute("innerHTML"))

输出:空

  • 方法2:获取元素text
print(WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//input[@id='exttemp']"))).text)

输出:空

  • 方法3:获取value属性
print(WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//input[@id='exttemp']"))).get_attribute("value"))

输出:"---"

  • 方法4:获取value属性(通过get_property)
print(WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//input[@id='exttemp']"))).get_property("value"))

输出:"---"

解决方案:通过Chrome DevTools Protocol(CDP)获取无障碍计算属性

由于真实数值仅暴露在无障碍计算属性中,可借助CDP的Accessibility.getFullAXTree命令提取该数值,代码示例如下:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

# 等待目标元素加载完成
target_element = WebDriverWait(driver, 10).until(
    EC.visibility_of_element_located((By.ID, "exttemp"))
)

# 获取元素的backendNodeId(用于匹配无障碍树节点)
location = target_element.location
backend_node_id = driver.execute_cdp_cmd(
    "DOM.getNodeForLocation",
    {"x": location["x"], "y": location["y"]}
)["backendNodeId"]

# 获取完整的无障碍树数据
full_ax_tree = driver.execute_cdp_cmd("Accessibility.getFullAXTree", {})

# 遍历无障碍树,找到目标节点并提取真实数值
for node in full_ax_tree["nodes"]:
    if node.get("backendDOMNodeId") == backend_node_id:
        real_value = node.get("value", {}).get("value")
        print(f"真实数值: {real_value}")
        break

原理说明

网页通过无障碍API将真实数值暴露给辅助设备,Selenium的常规方法无法直接访问这些计算后的属性,而CDP命令可以直接调用浏览器的无障碍接口,获取完整的计算属性树,从而提取出网页可见的真实数值。

内容的提问来源于stack exchange,提问作者Pablo Loaiza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 05:27:32