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

Selenium的quit()是否影响其他实例?如何实现干净退出?

关于Selenium中quit()/close()的疑问与干净退出方案

1. quit()会不会关闭第二个脚本的WebDriver实例?

不会。每个Python脚本都是独立的操作系统进程,各自创建的WebDriver实例相互隔离。调用quit()只会终止当前脚本内初始化的WebDriver会话,关闭该会话关联的所有浏览器窗口和驱动进程,完全不会影响另一个并行运行的脚本中的WebDriver实例。

2. 如何干净退出Selenium,避免残留Chrome/WebDriver进程?

你遇到的close()导致进程残留的问题,本质是对两个方法的作用范围理解有误,以下是可靠的解决方案:

  • 优先使用quit()而非close()
    close()仅关闭当前聚焦的浏览器窗口,若会话中还有其他窗口未关闭,或驱动进程未被销毁,就会残留后台进程;而quit()会彻底终止整个WebDriver会话,关闭所有关联窗口,同时销毁驱动进程,这是官方推荐的正常退出方式。

  • 用上下文管理器(with语句)自动管理资源
    上下文管理器会在代码块执行完毕(无论正常结束还是抛出异常)自动调用quit(),无需手动编写清理逻辑,是最安全的写法:

    from selenium import webdriver
    
    with webdriver.Chrome() as driver:
        # 执行你的业务操作
        driver.get("https://example.com")
    
  • 用try/finally确保quit()执行
    如果无法使用上下文管理器,务必将业务代码放在try块中,finally块中强制调用quit(),保证即使脚本抛出异常,也能完成清理:

    from selenium import webdriver
    
    driver = webdriver.Chrome()
    try:
        # 业务操作代码
        driver.get("https://example.com")
    finally:
        driver.quit()
    
  • 兜底:手动清理残留进程
    若以上方法仍有进程残留(比如极端情况下驱动崩溃),可在脚本末尾添加进程清理命令(注意:会终止所有同名进程,谨慎使用):

    • Windows系统:
      import os
      os.system("taskkill /f /im chromedriver.exe /im chrome.exe")
      
    • Linux/macOS系统:
      import os
      os.system("pkill chromedriver && pkill chrome")
      

关于XY问题的判断

你的问题确实属于XY问题:你最初的疑问是quit()是否影响其他脚本,但根源是close()使用不当导致的进程残留,解决干净退出Selenium的核心问题后,最初的疑问自然有了明确答案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:01:11