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

Selenium技术问题:如何获取数据绑定变量对应的输入值

Selenium获取不到输入框显示值的原因及解决方法

原因

你遇到的情况是因为这个输入框用了前端双向绑定框架(从代码里的data-bind="{wireless5g1.ssid}"能看出来,比如Knockout.js这类),输入框的显示值是框架动态渲染的,并没有同步写到input元素的value属性里——所以outer HTML里看不到,但浏览器检查器显示的是实时渲染后的状态,所以能看到。

另外,你用.text和innerHTML本来就不对:input是自闭合标签,没有子元素,所以innerHTML必然为空;.text是拿元素的文本节点内容,而输入框的输入值根本不存在于文本节点里,自然拿不到。

解决方法

方法1:用Selenium的get_attribute("value")获取

这是最通用的方法,直接获取输入框的实时value属性值:

# Python示例
from selenium.webdriver.common.by import By

# 定位到目标input元素
input_elem = driver.find_element(By.CSS_SELECTOR, ".text-wrap-inner input[type='text']")
# 获取实际显示值
real_value = input_elem.get_attribute("value")
print(real_value)

方法2:直接调用前端框架的数据源(针对绑定场景)

既然页面用了双向绑定,也可以直接通过执行JS拿到绑定的原始数据:

# 执行JS获取绑定的wireless5g1.ssid值
real_value = driver.execute_script("return wireless5g1.ssid();")
print(real_value)

你提供的页面代码

<div widget="textbox" class="l-inline-block container widget-container text-container" data-bind="{wireless5g1.ssid}" label-field="{WIRELESS_SETTINGS.WIRELESS_NETWORK_NAME}" id="widget--1ed5eee2-5134-b2f5-6ec7-a7a690939c20">
  <div class="widget-fieldlabel-wrap">
    <div class="widget-fieldlabel-inner">
      <label class="widget-fieldlabel text-fieldlabel">Network Name (SSID)</label>
      <span class="widget-separator">:</span>
    </div>
  </div>
  <div class="widget-wrap-outer text-wrap-outer">
    <div class="widget-wrap text-wrap">
      <span class="text-wrap-before"></span>
      <span class="text-wrap-inner">
        <input type="text">
      </span>
      <span class="text-wrap-after"></span>
    </div>
  </div>
</div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 22:41:29