Chrome更新至113.0.5672.127后Python Selenium脚本失效求助
问题分析与解决方案
核心原因
Chrome 113版本对无头(headless)模式做了底层行为变更:
- 原
--headless参数启用的是旧版无头模式,与正常Chrome浏览器的环境差异极大(比如窗口默认尺寸极小、焦点处理逻辑简化、JS执行上下文受限); - 控制台出现的
Autofocus processing was blocked提示,说明页面的自动聚焦逻辑在旧无头模式下触发异常,导致页面JS渲染流程中断,进而引发元素无法定位的问题; - 正常模式下浏览器环境完整,焦点逻辑、页面渲染都正常,所以脚本能稳定运行。
具体解决步骤
切换到新版无头模式
替换原参数为:chrome_options.add_argument("--headless=new")新版无头模式完全模拟正常Chrome的行为,包括窗口尺寸、焦点处理、JS执行环境,能极大减少环境差异带来的问题。
显式设置窗口尺寸
旧无头模式默认窗口尺寸很小,可能触发页面响应式布局,导致元素结构或位置变化。添加参数强制设置合适尺寸:chrome_options.add_argument("--window-size=1920,1080")禁用自动聚焦限制
针对控制台的Autofocus报错,添加参数跳过该限制:chrome_options.add_argument("--disable-features=AutofocusMV2")优化页面等待策略
即使使用WebDriverWait,也可以额外等待页面JS加载完成,比如:WebDriverWait(browser, 20).until(lambda d: d.execute_script('return document.readyState') == 'complete')确保页面所有资源和JS逻辑都执行完毕后,再进行元素定位。
验证ChromeDriver版本匹配
确认ChromeDriver版本与Chrome浏览器版本完全对应(113.0.5672.x系列),新版无头模式对版本匹配要求更严格,建议重新下载对应版本的ChromeDriver覆盖。
内容的提问来源于stack exchange,提问作者Антон
相关产品推荐
相关产品推荐

