使用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
相关产品推荐
相关产品推荐

