核心方法对比
driver.quit()
这是最推荐、最常用的退出方法。

- 功能:关闭所有由 WebDriver 会话打开的浏览器窗口,并彻底终止 WebDriver 进程。
- 结果:
- 所有浏览器窗口关闭。
- 浏览器进程结束。
- WebDriver 进程(如
chromedriver.exe)被销毁,释放所有相关资源。
- 使用场景:当一个测试脚本运行完毕,或者你想完全结束当前会话时,都应该使用
driver.quit(),它能确保没有残留进程,是“干净”的退出方式。
driver.close()
- 功能:只关闭当前活动的浏览器窗口或标签页。
- 结果:
- 当前窗口关闭。
- 如果这是唯一打开的窗口,那么整个浏览器和 WebDriver 进程也会随之关闭。
- 如果还有其他窗口打开,WebDriver 进程会继续在后台运行,管理剩余的窗口。
- 使用场景:当你打开了多个窗口或标签页,只想关闭其中一个时使用,但在大多数自动化测试场景中,我们通常只有一个会话窗口,
close()的使用频率远低于quit()。
代码示例
下面是一个完整的示例,展示了如何使用 quit(),并处理可能出现的异常。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import WebDriverException
# 1. 初始化 WebDriver (这里以 Chrome 为例)
try:
driver = webdriver.Chrome()
driver.implicitly_wait(10) # 设置隐式等待
# 2. 打开一个网页
driver.get("https://www.example.com")
print(f"当前页面标题: {driver.title}")
# 3. 模拟一些操作 (例如点击一个链接,打开新窗口)
# 假设这个链接会打开一个新标签页
# link = driver.find_element(By.LINK_TEXT, "More information...")
# link.click()
# print(f"点击后窗口句柄数量: {len(driver.window_handles)}")
# 4. 完成操作后,退出会话
print("操作完成,正在退出浏览器...")
driver.quit() # <-- 推荐使用 quit()
print("浏览器已成功退出。")
except WebDriverException as e:
print(f"WebDriver 操作出错: {e}")
# 即使在出错时,也最好尝试退出
if 'driver' in locals() and driver:
driver.quit()
except Exception as e:
print(f"发生未知错误: {e}")
# 即使在出错时,也最好尝试退出
if 'driver' in locals() and driver:
driver.quit()
finally:
# finally 块中的代码无论如何都会执行
print("脚本执行结束。")
最佳实践和推荐用法
-
总是使用
driver.quit():在你的测试脚本或自动化任务的最后,使用driver.quit()是标准做法,它能确保会话被完全清理,避免资源泄露。 -
使用
try...finally结构:这是最健壮的方式,无论脚本是正常执行完毕还是中途抛出异常,finally块中的代码都会被执行,这样可以保证即使脚本出错,driver.quit()也会被调用,防止浏览器和驱动进程残留。driver = webdriver.Chrome() try: # ... 你的自动化操作 ... driver.get("https://www.baidu.com") print("页面加载成功") finally: print("执行退出操作") driver.quit() -
使用
with语句 (Python 3.10+):对于支持 WebDriver 上下文管理器的版本(Selenium 4+ 对某些驱动支持更好),可以使用with语句,它会自动在代码块执行完毕后调用quit(),非常优雅。
(图片来源网络,侵删)# 注意:此功能依赖于 Selenium 4+ 和驱动的支持 from selenium import webdriver # 使用 with 语句,会自动调用 quit() with webdriver.Chrome() as driver: driver.get("https://www.python.org") print(f"页面标题: {driver.title}") # 退出 with 块后,driver.quit() 会被自动调用 print("已自动退出浏览器。")
如何检查是否正确退出?
如果你不确定是否正确退出,可以检查你的任务管理器(Windows)或活动监视器(macOS)。
- 错误情况(使用
close()或未退出):你可能会看到chrome.exe或chromedriver.exe进程还在后台运行。 - 正确情况(使用
quit()):在脚本运行完毕后,这些进程应该会自动消失。
| 方法 | driver.quit() |
driver.close() |
|---|---|---|
| 功能 | 关闭所有窗口,终止整个 WebDriver 会话 | 只关闭当前活动窗口 |
| 进程影响 | 销毁浏览器和 WebDriver 进程 | 可能残留 WebDriver 进程 |
| 推荐度 | ⭐⭐⭐⭐⭐ (强烈推荐,用于脚本结束) | ⭐⭐ (用于多窗口场景) |
| 使用场景 | 测试脚本结束,需要完全清理资源 | 需要在多个窗口/标签页间切换并关闭其中一个 |
记住这个简单的规则:当一个任务完成时,用 quit()。

