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

使用Python+Selenium修改输入框值按回车 输入值被重置如何解决

Selenium修改输入框值自动回弹问题解决方法

问题场景

尝试修改edmunds网站邮编输入框的值采集筛选后内容,常规的清空+输入操作完成后,输入框会自动回弹为默认值,最初的实现代码如下:

driver = webdriver.Chrome()
page = driver.get("https://www.edmunds.com/cars-for-sale-by-owner/")

inputElement = driver.find_element_by_name("zip")
inputElement.clear()
inputElement = driver.find_element_by_name("zip")
inputElement.send_keys('23835')
inputElement.send_keys(Keys.ENTER)

核心原因

该网站输入框绑定了前端校验逻辑,Selenium原生的clear()方法只能清除输入框的显示值,无法修改元素实际绑定的value属性,导致页面逻辑自动回填默认值。

最终解决方案

先通过JS强制修改输入框的value属性,配合显式等待确保元素加载完成后再执行后续操作,完整可运行代码如下:
首先导入所需依赖:

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

业务逻辑代码:

def enter_value(zipcode):
    inputElement = driver.find_element(By.NAME, "zip")
    # 强制清空输入框绑定的value属性
    driver.execute_script("arguments[0].setAttribute('value','')",inputElement)
    inputElement.clear()
    inputElement.send_keys(zipcode)
    inputElement.send_keys(Keys.ENTER)

driver = webdriver.Chrome()
driver.get("https://www.edmunds.com/cars-for-sale-by-owner/")
# 显式等待输入框加载完成,最长等待20秒
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.NAME, 'zip')))

enter_value(zipcode="23831")

操作完成后等待页面加载完成,即可获取到对应邮编筛选后的页面内容。

内容的提问来源于stack exchange,提问作者Sayad Ahmed Shaurov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:54:01