Selenium执行maximize_window()报WebDriverException异常
问题原因
你碰到的unknown error: unexpected command response是Chrome 103版本的已知兼容bug,和访问的目标站点没有关系。本质是Chrome 103和对应版本ChromeDriver的通信逻辑有缺陷,在页面刚加载完成的节点调用窗口控制接口(最大化、调整尺寸等)时,会出现指令响应解析失败的问题。
另外你贴的代码本身还有个漏写的问题:没有导入time模块,直接调用time.sleep(5)会触发NameError,只是当前异常先在最大化窗口那行抛出,没走到这步而已。
解决方案
按优先级依次尝试即可:
- 升级依赖版本:直接把Selenium升级到4.3.0及以上版本,同时把ChromeDriver替换成和本地Chrome大版本匹配的最新版,这个通信兼容问题在Selenium 4.3.0版本已经做了官方修复,是最彻底的解决方式。
- 调整代码执行顺序:如果暂时不能升级版本,把
maximize_window()的调用移到页面访问操作之前,避开页面加载后的通信冲突窗口,修改后的可运行代码参考:
from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By import time # 补全缺失的模块导入 chrome_path = r"C:\Users\hpoddar\Desktop\Tools\chromedriver_win32\chromedriver.exe" s = Service(chrome_path) url = 'https://www.techwithtim.net/' driver = webdriver.Chrome(service=s) # 先完成窗口最大化,再加载目标页面 driver.maximize_window() driver.get(url) time.sleep(5) search=driver.find_element(by=By.CLASS_NAME, value="search-field")
- 启动参数兜底:如果前两种方式都不生效,可以直接通过Chrome启动参数实现启动即最大化,完全绕过运行时发送窗口控制指令的逻辑,不需要再单独调用
maximize_window():
from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument("--start-maximized") # 初始化驱动时传入配置 driver = webdriver.Chrome(service=s, options=chrome_options)
- 版本校验:最后确认你本地使用的ChromeDriver大版本和安装的Chrome浏览器大版本完全一致,你报错里的Chrome版本是103.0.5060.66,必须对应使用103版本的ChromeDriver,版本不匹配会大幅提升这类通信异常的出现概率。
内容的提问来源于stack exchange,提问作者Himanshu Poddar
相关产品推荐
相关产品推荐

