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

多次运行Selenium UI自动化后Mac存储空间不足问题求助

问题根因

你遇到的存储空间占用后重启恢复的问题,本质是Chrome运行时生成的临时用户数据目录未被正常删除。Mac系统的临时文件默认存放在/private/var/folders/路径下,重启后系统会自动清理该目录下的过期文件,所以重启后存储会恢复。

现有代码的潜在问题:

  • cleanupDrivers仅在流程正常执行时触发,一旦出现用例崩溃、jest提前退出、进程被手动终止等异常场景,driver.quit()没有执行机会,Chrome进程被强制杀死,不会主动删除自身的临时数据目录
  • 即使加了--incognito无痕参数,无头模式下Chrome每次启动仍会生成独立的临时用户目录,单次占用从数百MB到数GB不等,多次执行后累积占用可达数十GB
  • 你使用的selenium-webdriver@4.0.0-beta.4是测试版本,存在已知的driver.quit()执行失效的bug

修复方案

  1. 强制兜底执行清理逻辑
    在你的驱动工具文件中添加进程事件监听和jest全局钩子,无论执行是否正常都触发清理:
// jest全量用例执行结束后统一清理
afterAll(async () => {
  await cleanupDrivers();
  driversToCleanUp.length = 0;
});

// 监听进程退出信号,异常终止时也执行清理
process.on('SIGINT', async () => {
  await cleanupDrivers();
  process.exit(0);
});
process.on('SIGTERM', async () => {
  await cleanupDrivers();
  process.exit(0);
});

如果你的用例是每个测试用例独立创建driver,建议在afterEach钩子中清理当前用例的driver,不要等到所有用例跑完再统一清理。

  1. 优化Chrome启动参数,减少存储占用
    在setChromeOptions方法中新增以下参数:
options.addArguments("--disk-cache-size=0"); // 禁用磁盘缓存
options.addArguments("--media-cache-size=0"); // 禁用媒体缓存
options.addArguments("--disable-dev-shm-usage"); // 减少共享内存占用

也可以手动指定临时目录,清理时主动删除目录更保险:

import * as fs from 'fs';
import * as os from 'os';
import * as path from 'path';

// 生成独立临时目录
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'chrome-test-'));
options.addArguments(`--user-data-dir=${tempDir}`);

// 清理阶段除了调用driver.quit(),再递归删除临时目录
const rmDirRecursive = (dir: string) => {
  if (fs.existsSync(dir)) {
    fs.readdirSync(dir).forEach(file => {
      const curPath = path.join(dir, file);
      if (fs.lstatSync(curPath).isDirectory()) rmDirRecursive(curPath);
      else fs.unlinkSync(curPath);
    });
    fs.rmdirSync(dir);
  }
};
  1. 升级依赖版本
    将selenium-webdriver升级到4.x正式版本,同时保证chromedriver的大版本和你本地安装的Chrome浏览器大版本完全匹配,避免版本不兼容导致的清理命令失效问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 09:54:00