Chrome WebDriver使用send_keys报错,咨询版本兼容及解决方案
解决ChromeDriver与Chrome版本不兼容导致的WebDriverException问题
首先直接给你结论:是的,这个错误100%是Chrome浏览器和ChromeDriver版本不兼容搞出来的。从你贴的错误信息里能明确看到:
- 你的Chrome浏览器版本是
65.0.3325.181 - 而你用的ChromeDriver是
2.29.461591,这个版本只支持Chrome 56~58版本,和你的Chrome 65完全不匹配,这就是问题的核心。
应该使用什么版本的ChromeDriver?
对应Chrome 65的ChromeDriver版本是2.38,这个版本官方明确支持Chrome 65~67版本。给你一个简单的版本对应规则(避免后续踩坑):
- Chrome 64~66 → ChromeDriver 2.37/2.38
- Chrome 67~69 → ChromeDriver 2.40/2.41
- 通用原则:ChromeDriver的版本号通常会和Chrome的主版本号对应,比如Chrome 7x对应ChromeDriver 7x,以此类推。
具体解决步骤
1. 卸载旧版ChromeDriver
找到你当前ChromeDriver的位置(可能在Python安装目录的site-packages/selenium/webdriver/chrome下,或者你单独存放的路径),删除chromedriver.exe文件。
2. 下载匹配的ChromeDriver
去官方ChromeDriver下载渠道获取Windows平台的2.38版本chromedriver.exe。
3. 配置ChromeDriver路径
有两种便捷方式:
- 把下载好的
chromedriver.exe放到Python安装目录的Scripts文件夹里,这样代码里直接调用webdriver.Chrome()就能自动找到驱动; - 或者在代码里手动指定驱动的绝对路径:
driver = webdriver.Chrome(executable_path='D:/your/path/to/chromedriver.exe')
4. 优化你的代码(针对你给出的片段)
你贴的代码里from selenium.webdriver.common.keys i...明显是输入错误,正确的导入应该是:
from selenium.webdriver.common.keys import Keys
另外,建议在操作元素前加入显式等待,避免因为元素未完全加载导致的报错,比如:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.keys import Keys driver = webdriver.Chrome() driver.get("your_target_url") # 等待元素可点击,最多等待10秒 elem = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.ID, "your_element_identifier")) ) elem.clear() elem.send_keys("your_input_text")
额外注意事项
- 以后Chrome浏览器更新后,记得同步更新ChromeDriver,避免再次出现版本不匹配的问题;
- 如果更换版本后还是报错,检查一下元素定位是否正确(比如元素是否在iframe中,或者是否被隐藏),可以尝试用
driver.switch_to.frame()切换iframe后再操作元素。
内容的提问来源于stack exchange,提问作者ryy77
相关产品推荐
相关产品推荐

