Python Selenium执行send_keys回车操作报加载状态未知错误
问题原因
你遇到的报错由3个问题共同导致:
- 缺失必要模块导入:代码中使用了
WebDriverWait和expected_conditions(即代码里简写的EC),但没有写对应导入语句,即使解决了当前报错,后续代码也会因NameError无法运行 - 版本兼容bug:报错信息里显示你的Chrome版本是103.0.5060.53,这个版本的Chrome和4.2.0及更早版本的Selenium存在已知通信问题,按下回车触发页面跳转时,Selenium无法正确接收页面加载状态响应,就会抛出你看到的
unexpected command response错误 - 路径转义风险:你写的驱动路径
"C:\chromedriver.exe"在Python普通字符串中存在转义符解析风险,可能导致程序找不到chromedriver文件
修复步骤
- 先升级本地Selenium版本到最新版,解决Chrome 103的兼容问题,在终端执行以下命令:
pip install --upgrade selenium
- 补全导入语句、修正路径写法、调整异常块逻辑,替换为以下可正常运行的代码:
from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys # 补全缺失的两个导入 from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 路径前加r标记为原始字符串,避免转义问题 serv_obj = Service(r"C:\chromedriver.exe") driver = webdriver.Chrome(service=serv_obj) try: driver.get("https://techwithtim.net") print(driver.title) search = driver.find_element(By.NAME, "s") search.send_keys("test") search.send_keys(Keys.RETURN) main = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "main"))) print(main.text) finally: # 无论代码运行成功还是报错,最后都关闭浏览器,不要只在异常时退出 driver.quit()
补充说明:如果你升级Selenium之后还是遇到同类报错,可以直接把
search.send_keys(Keys.RETURN)替换为search.submit(),用表单提交的方式代替模拟按回车,也能绕过这个版本兼容问题。
内容的提问来源于stack exchange,提问作者Srijan Bimb
相关产品推荐
相关产品推荐

