求助:Selenium无法识别已更新的Chrome WebDriver版本
解决Chrome与WebDriver版本不匹配问题
一、修正代码中的核心错误
你的代码存在两处关键错误,会直接导致驱动加载异常:
- 错误设置浏览器路径:
options.binary_location被设为chromedriver.exe,但这个参数应该指向Google Chrome的可执行文件路径(例如C:\Program Files\Google\Chrome\Application\chrome.exe),而非驱动文件。 - 重复的配置参数:
webdriver.Chrome()同时传入options和已弃用的chrome_options,会引发配置冲突,导致驱动加载异常。
修正后的代码:
from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By # 配置驱动路径(确保此文件是109版本) chromedriver_path = "chromedriver.exe" options = Options() # 设置Chrome浏览器的实际安装路径,根据你的系统调整 options.binary_location = r'C:\Program Files\Google\Chrome\Application\chrome.exe' options.headless = True # 隐藏GUI options.add_argument("start-maximized") # 全屏窗口 # 禁用图片和JavaScript(合并到同一options对象) options.add_argument("--blink-settings=imagesEnabled=false") options.add_argument("--disable-javascript") # 初始化驱动,仅传入正确的路径和配置 driver = webdriver.Chrome(executable_path=chromedriver_path, options=options) # 需先定义目标URL url = "https://你的目标网址.com" driver.get(url) pb = driver.find_elements(By.XPATH, ".//*") lista = list() x = 0 for p in pb: tag = p.tag_name.lower() if tag in ['input', 'select', 'textarea', 'button']: x += 1 # 处理class属性为空的情况 class_list = str(p.get_attribute('class')).split(" ") if p.get_attribute('class') else [] lista.append([x, tag, p.get_attribute('type'), p.get_attribute('id'), class_list]) if x > 100: break # 处理无表单元素的情况(原代码判断逻辑错误,lista初始为[]不会是None) if not lista: lista.append("no hay formularios en la pagina") driver.quit() print(lista)
二、彻底清理旧版本WebDriver
即使你下载了新驱动,系统或脚本目录可能残留旧版本:
- 检查脚本所在文件夹:打开CMD进入该目录,执行
chromedriver.exe --version,确认版本为109.0.5414.75。若不是,替换为你下载的新驱动。 - 排查系统所有驱动路径:在CMD中执行
where chromedriver.exe,会列出所有找到的驱动文件,删除所有版本不符的旧文件。
三、验证版本匹配性
- 打开Chrome,输入
chrome://version/确认浏览器版本为109.0.5414.75。 - 执行驱动目录下的
chromedriver.exe --version,确保驱动版本与浏览器完全一致。
四、重启运行环境
修改完成后,关闭所有CMD窗口和Python编辑器,重新打开执行脚本,避免缓存导致旧驱动被加载。
内容的提问来源于stack exchange,提问作者Yoseph_Reyes
相关产品推荐
相关产品推荐

