180+用例的Selenium测试套件因ChromeDriver进程残留致CPU占用过高求助
解决Selenium Chrome测试套件CPU占用100%及进程残留问题
问题核心
你的180+用例测试套件出现Chrome进程残留、CPU满载、执行失败,根源在于ChromeDriver与Chrome版本不匹配,加上部分场景下默认关闭逻辑不彻底;而Firefox的进程管理机制更稳定,因此无此问题。
解决方案
1. 严格对齐ChromeDriver与Chrome版本
当前Chrome版本为124.0.6367.156,但ChromeDriver使用的是124.0.6367.155,小版本不一致会导致进程通信异常,进而引发进程残留。立即下载与Chrome完全匹配版本的ChromeDriver。
2. 强化进程终止逻辑
不要仅依赖driver.close(),必须调用driver.quit(),同时在测试结束后强制清理残留进程:
- Python示例:
from selenium import webdriver import os driver = webdriver.Chrome(options=your_options) try: # 执行测试步骤 finally: # 先正常终止驱动 driver.quit() # 强制清理所有Chrome相关进程(Windows环境) os.system("taskkill /f /im chrome.exe /im chromedriver.exe")
- Java示例:
WebDriver driver = new ChromeDriver(your_options); try { // 测试逻辑 } finally { driver.quit(); // 强制杀死进程 Runtime.getRuntime().exec("taskkill /F /IM chrome.exe /IM chromedriver.exe"); }
3. 配置ChromeOptions优化进程行为
添加启动参数减少不必要的子进程,降低残留概率:
options = webdriver.ChromeOptions() # 禁用后台任务 options.add_argument("--no-background-tasks") # 禁用扩展和插件 options.add_argument("--disable-extensions") options.add_argument("--disable-plugins") # 无头模式(无需界面时启用,大幅减少资源占用) options.add_argument("--headless=new") # 禁用GPU加速 options.add_argument("--disable-gpu") # 限制进程数量(可选,谨慎使用,可能影响复杂页面测试) options.add_argument("--single-process")
4. 全局套件级清理
在测试套件的全局清理阶段(如teardownSuite),统一执行一次Chrome进程清理,避免单个用例清理失败导致进程累积。
内容的提问来源于stack exchange,提问作者kahirrao
相关产品推荐
相关产品推荐

