如何在Python-Selenium中获取HTML输入框的value值?
如何在Python-Selenium中获取Jupyter Widget输入框的Value值?
我之前也碰到过类似的问题,特别是处理Jupyter Widget生成的动态元素时,很容易踩这个小坑。下面给你两种可靠的解决办法:
方法1:使用Selenium内置的get_attribute()方法(推荐)
这是Selenium专门用来获取元素属性的标准方法,不管输入框的value是静态定义还是动态绑定的,都能直接拿到当前显示的值,用法也最简洁:
from selenium.webdriver.common.by import By # 定位到目标input元素 input_element = driver.find_element(By.CSS_SELECTOR, ".widget-text input.form-control") # 获取value属性值 input_value = input_element.get_attribute('value') print(input_value)
方法2:修正JavaScript脚本,添加返回语句
你之前的代码返回None,是因为你的JS脚本只是访问了arguments[0].value,但没有把这个值返回给Python端。只需要给脚本加上return关键字就能解决:
from selenium.webdriver.common.by import By input_element = driver.find_element(By.CSS_SELECTOR, ".widget-text input.form-control") # 注意添加return关键字 input_value = driver.execute_script("return arguments[0].value;", input_element) print(input_value)
补充说明
Jupyter Widget生成的输入框,它的value通常是由前端框架动态管理的,直接访问DOM属性时如果没有返回值,Selenium的execute_script就会默认返回None。而get_attribute()方法会自动处理这些动态属性的读取逻辑,所以更推荐用第一种方法。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

