You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Selenium启动的Chrome实例在报错或程序结束后保持运行

解决Chrome实例在程序结束/出错时自动关闭的问题

我之前也碰到过类似的情况,结合你给出的环境(Python 3.9 + Selenium 3.141.0),给你几个额外的解决方案试试:

1. 捕获异常并添加手动阻塞等待

如果程序出错时窗口直接关闭,你可以通过捕获所有异常,在异常分支和程序末尾添加手动阻塞,避免进程直接退出:

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_experimental_option("detach", True)

try:
    driver = webdriver.Chrome(ChromeDriverManager().install(), options=chrome_options)
    driver.get('https://www.google.com')
    # 这里放你的业务代码
except Exception as e:
    print(f"运行出错: {e}")
    input("按回车键继续...")  # 阻塞进程,保持窗口打开
finally:
    # 注释掉自动退出的代码,改用手动触发
    # driver.quit()
    input("按回车键关闭窗口...")

这个方法不管是正常运行结束还是出错,都会等待你手动输入才会让进程退出,从而保持Chrome窗口持续打开。

2. 检查Chrome与ChromeDriver的版本兼容性

虽然ChromeDriverManager会自动匹配版本,但偶尔会因为网络或缓存问题,导致安装的ChromeDriver和本地Chrome版本不兼容,进而让detach选项失效。你可以:

  • 打开Chrome,在地址栏输入chrome://version/查看当前浏览器版本
  • 手动下载对应版本的ChromeDriver,然后在代码中指定路径:
driver = webdriver.Chrome(executable_path=r"C:\你的路径\chromedriver.exe", options=chrome_options)

3. 添加Chrome启动参数增强稳定性

试试给Chrome加几个额外的启动参数,可能会改善detach选项的生效情况:

chrome_options = Options()
chrome_options.add_experimental_option("detach", True)
# 添加以下参数优化运行环境
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")
chrome_options.add_argument("--start-maximized")
chrome_options.add_argument("--disable-extensions")

这些参数能减少Chrome运行时的异常干扰,帮助detach选项正常工作。

4. 升级到Selenium 4.x版本(可选)

Selenium 4.x对Chrome的detach选项支持更稳定,如果你可以升级版本,不妨试试:

  • 先卸载旧版本:pip uninstall selenium
  • 安装最新版:pip install selenium
    然后调整代码为Selenium 4.x的推荐写法:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

options = webdriver.ChromeOptions()
options.add_experimental_option("detach", True)
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
driver.get('https://www.google.com')

Selenium 4.x的detach逻辑做了优化,大概率能解决你的问题。

希望这些方法能帮到你!

内容的提问来源于stack exchange,提问作者RagRocks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 19:37:56