
本文详解在使用 selenium 启动 chrome 浏览器后,如何确保其进程被完全终止,避免残留进程占用系统资源、影响后续运行或导致内存泄漏。
本文详解在使用 selenium 启动 chrome 浏览器后,如何确保其进程被完全终止,避免残留进程占用系统资源、影响后续运行或导致内存泄漏。
在使用 Selenium 自动化测试或网页爬虫时,调用 driver.quit() 通常能正常关闭浏览器窗口并释放大部分资源。但实际开发中常遇到:Chrome 进程(如 chrome.exe 或 Google Chrome Helper)仍驻留在任务管理器中,持续占用 CPU 和内存——尤其在频繁启停、异常退出或使用无头模式(--headless)时更为明显。
这并非 quit() 方法失效,而是其设计逻辑决定的:quit() 会向 WebDriver 发送关闭会话请求,并尝试优雅终止浏览器进程;但若 Chrome 响应延迟、存在子进程卡死(如渲染进程、GPU 进程、扩展进程),或系统权限受限,部分进程可能无法被及时回收。
✅ 推荐解决方案(跨平台 & 安全可靠):
1. 优先使用 driver.quit() + 显式等待 + 异常防护
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
options = Options()
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")
try:
driver = webdriver.Chrome(options=options)
driver.get("https://example.com")
# ... 执行操作 ...
finally:
if 'driver' in locals():
try:
driver.quit() # 首选标准关闭方式
except Exception as e:
print(f"Warning: driver.quit() failed: {e}")
finally:
time.sleep(0.5) # 给系统短暂缓冲时间
2. 补充强制清理(按操作系统选择)
⚠️ 注意:强制杀进程是兜底手段,应在 quit() 后谨慎使用,避免误杀其他 Chrome 实例。
-
Windows(推荐 taskkill,更安全):
import os os.system('taskkill /F /IM chrome.exe /T >nul 2>&1')/F 强制终止,/T 终止整个进程树(含子进程),>nul 2>&1 静默错误输出。
-
macOS / Linux(使用 pkill 更精准):
import os os.system('pkill -f "Chrome.*--remote-debugging-port" || true') # 仅杀调试相关进程 os.system('pkill -f "google chrome" || true')
❌ 不推荐直接使用 os.system('killall -9 chrome.exe'):
- killall 在 Windows 上不可用(该命令属于 macOS/Linux);
- -9(SIGKILL)过于暴力,可能破坏用户配置、未保存数据,且对多用户环境不友好;
- chrome.exe 名称在不同版本或语言系统中可能变化(如含空格或路径),匹配不准。
? 进阶建议:
- 使用 ChromeDriverManager 自动管理驱动版本,减少兼容性问题;
- 启用 --disable-background-timer-throttling 等参数提升进程响应性;
- 对长期运行脚本,可结合 psutil 库进行进程级检测与精准清理(需额外安装):
import psutil for proc in psutil.process_iter(['name', 'cmdline']): try: if proc.info['name'] == 'chrome.exe' and '--test-type' in ' '.join(proc.info['cmdline']): proc.kill() except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess): pass
总结:driver.quit() 是标准且首选的关闭方式,应始终作为第一步骤;强制清理仅用于兜底场景,务必根据操作系统选择安全、精准的命令,并避免无差别 kill -9。合理组合使用,即可实现 Chrome WebDriver 的真正“完全关闭”。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











