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

Python中Selenium执行JavaScript:按name定位元素赋值问题

解决JS驱动网站表单赋值问题:通过name属性定位元素并赋值

嘿,我来帮你搞定这个问题!你之前踩的坑其实是把Selenium的Python语法和浏览器端的JavaScript语法搞混了——浏览器环境里根本没有driver或者webdriver这些对象,所以那段JS代码肯定跑不通。

给你两种靠谱的解决办法,任选其一就行:

方法一:用原生JS通过name定位并赋值

浏览器端的JS里,要通过name属性获取元素,得用document.getElementsByName()方法。这个方法会返回一个元素集合(虽然你说这个name是唯一的,但语法上还是要取集合里的第一个元素)。把你的执行脚本改成这样:

driver.execute_script("document.getElementsByName('estimated-monthly-usage')[0].value='1000'")

简单解释:getElementsByName('estimated-monthly-usage')拿到所有匹配该name的元素,[0]选中第一个,然后给它的value属性赋值1000。

方法二:直接用Selenium原生方法(更推荐)

其实你完全不用写JS,Selenium本身就支持通过name定位元素,用Python代码直接操作更直观,也不容易出错:

# 定位月度用量输入框元素
monthly_use = driver.find_element_by_name('estimated-monthly-usage')
# 清空输入框(可选,避免原有默认值干扰)
monthly_use.clear()
# 输入目标数值
monthly_use.send_keys('1000')

顺带提一句,你之前给邮编赋值用了JS,其实也可以用同样的Selenium方法简化:

zip_code = driver.find_element_by_id('edit-zipcode')
zip_code.clear()
zip_code.send_keys('18707')

最后点击按钮的话,直接调用button.click()就可以,不用额外写JS脚本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:14:45