Selenium执行send_keys(Keys.RETURN)报unexpected command response错误
异常产生原因
这个报错是Chrome 103版本与低版本Selenium、ChromeDriver的已知兼容性问题,和代码本身的逻辑无关。
Chrome 103调整了DevTools协议的命令响应规则:当执行send_keys(Keys.RETURN)触发页面跳转时,上一个输入命令的响应流程会被页面跳转直接打断,驱动无法收到预期的命令返回结果,就会抛出selenium.common.exceptions.WebDriverException: unknown error: unexpected command response异常。所有使用Chrome 103版本、搭配4.3.0以下版本Selenium的环境,执行回车触发跳转的操作时都可能触发这个问题。
解决方法
你可以任选以下一种方案修复:
- 临时缓冲规避:在输入搜索词和触发回车的操作之间加0.3-1秒的短等待,给驱动留出足够的响应接收时间,不需要修改现有依赖版本就能跑通。
- 升级依赖根治:将Selenium库升级到4.3.0及以上版本,同时下载和Chrome 103版本完全匹配的ChromeDriver替换本地旧版驱动,官方已经在新版本中适配了Chrome 103的协议调整,升级后不需要额外加等待就能正常运行。
- 改交互逻辑绕开:不使用
Keys.RETURN提交搜索,定位页面上的搜索提交按钮,调用按钮的.click()方法提交表单,也能避开send_keys触发跳转带来的响应中断问题。
修正后可运行代码示例
from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By import time # 路径前加r标记原生字符串,避免反斜杠被识别为转义字符 service = Service(r"C:\Program Files (x86)\chromedriver.exe") driver = webdriver.Chrome(service=service) driver.get("https://www.techwithtim.net/") print(driver.title) search = driver.find_element(By.NAME, 's') search.send_keys("test") # 加短等待规避兼容问题 time.sleep(0.5) search.send_keys(Keys.RETURN) # 预留页面加载时间,可根据自己的需求调整 time.sleep(3) driver.quit()
内容的提问来源于stack exchange,提问作者Han Tang
相关产品推荐
相关产品推荐

