80%的启动延迟源于selenium manager境外网络请求和默认冗余配置;应禁用manager、启用--headless=new、设page_load_strategy='eager'。

webdriver.Chrome() 启动慢不是浏览器本身卡,而是整个初始化链路在等——驱动下载、版本校验、浏览器握手、扩展加载、页面资源预取。直接上结论:**80% 的启动延迟来自 Selenium Manager 的境外网络请求和默认浏览器配置的冗余行为**。
禁用 Selenium Manager 自动下载与校验
从 Selenium 4.6 开始,默认启用 Selenium Manager,它每次启动都会尝试访问 https://googlechromelabs.github.io/(或 Mozilla 的对应地址)检查驱动版本匹配性。国内网络下,这个请求常超时或阻塞 10–30 秒,且缓存仅 1 小时,导致“偶尔卡一下”现象反复出现。
实操建议:
- 显式指定
executable_path(Selenium 4.15+ 已弃用,改用service参数) - 设置环境变量屏蔽自动行为:
SE_DISABLE_MANAGER=1 - 或强制使用国内镜像源(需升级到
selenium>=4.25.1):SE_DRIVER_MIRROR_URL=https://npmmirror.com/selenium/ - 验证是否生效:启动时观察日志,不再出现
Attempting to resolve driver或Downloading driver字样
ChromeOptions 必加的轻量级启动参数
默认 webdriver.Chrome() 会加载用户配置、扩展、GPU 渲染、沙箱、甚至恢复上次会话——这些对自动化毫无必要,却显著拖慢进程。
实操建议(只保留真正需要的):
Python 3.14.2是Python编程语言在2025年12月5日发布的稳定版本,属于3.14系列的第二个维护更新。该版本包含了18项修复,重点解决了多进程、数据类及正则表达式等模块的回归问题,并修复了CVE-2025-12084等安全漏洞。此版本标志着自由线程模式(移除GIL)正式获得官方支持,是Python发展的重要里程碑。
- 加
--headless=new(注意不是旧版--headless),新版无头模式更稳定、启动更快 - 加
--no-sandbox和--disable-dev-shm-usage(尤其在 Docker 或 CI 环境中必加,否则可能卡在 fork 阶段) - 加
--disable-gpu和--disable-extensions,移除图形与插件开销 - 避免
--window-size,它触发窗口管理器协商,纯无头下无效还多一次 IPC - 慎用
--user-data-dir:除非真要复用登录态,否则每次新建临时目录(如/tmp/chrome-XXXX)更干净、更快
pageLoadStrategy 设为 eager 或 none
默认策略是 normal,即等待 document.readyState === 'complete',意味着所有 JS、CSS、图片、iframe 全部加载完毕。但多数自动化任务只需 DOM 解析完成即可操作。
实操建议:
-
options.page_load_strategy = 'eager':等待DOMContentLoaded事件,通常快 3–8 秒 -
options.page_load_strategy = 'none':完全不等,立即返回,适合后续用WebDriverWait等具体元素 - ⚠️ 注意:
none下driver.get(url)可能返回时页面空白,必须配合显式等待,不能依赖隐式等待 - 别混用:
set_page_load_timeout()是超时兜底机制,和page_load_strategy是两套逻辑,可共存但目标不同
驱动与浏览器版本严格对齐
Chrome 125 要配 chromedriver 125.x,差一个小版本都可能触发降级兼容逻辑,导致握手变慢甚至失败。Selenium Manager 的校验失败后会 fallback 到本地查找,这个 fallback 过程本身就有延迟。
实操建议:
- 查 Chrome 版本:
chrome --version或driver.capabilities['browserVersion'] - 去
https://chromedriver.storage.googleapis.com/手动下载对应版本(注意看 LATEST_RELEASE 文件) - Linux/macOS 记得加执行权限:
chmod +x chromedriver - Windows 下确保
.exe后缀没被隐藏,路径不含中文或空格 - 验证方式:单独运行
./chromedriver --version,输出应与 Chrome 主版本一致
SE_DISABLE_MANAGER=1、--headless=new、page_load_strategy='eager'。其余都是根据具体场景打补丁。Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










