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

如何实现Selenium WebDriver每次运行测试时新建截图文件夹?

解决方案

核心思路

每次测试启动时,在指定根目录下创建一个以当前时间戳命名的专属子文件夹,后续所有截图都保存到这个文件夹里,避免不同测试的截图混放。

修改后的代码示例

import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class ScreenshotUtils {
    // 定义根目录(可根据实际路径修改)
    private static final String BASE_SCREENSHOT_DIR = "C:\\Users\\Kiko Kikostov\\IdeaProjects\\AboutPagesBanerScreenSizes\\15inchScreenSize\\Asia";
    // 存储本次测试的专属截图文件夹
    private static File currentTestScreenshotDir;

    // 初始化测试专属文件夹(在测试开始时调用一次)
    public static void initTestScreenshotDir() {
        // 用测试启动的时间戳作为文件夹名,确保唯一性
        String testTimestamp = new SimpleDateFormat("dd_MM_yyyy__hh_mm_ss").format(new Date());
        currentTestScreenshotDir = new File(BASE_SCREENSHOT_DIR, testTimestamp);
        
        // 如果文件夹不存在则创建(包括父目录)
        if (!currentTestScreenshotDir.exists()) {
            currentTestScreenshotDir.mkdirs();
        }
    }

    // 截图方法
    static void captureScreenshot(String fileName) throws IOException {
        // 先检查专属文件夹是否已初始化,未初始化则自动触发
        if (currentTestScreenshotDir == null) {
            initTestScreenshotDir();
        }

        // 捕获截图
        File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);

        // 生成截图文件名(保留时间戳区分同测试内的不同截图)
        String screenshotTimestamp = new SimpleDateFormat("dd_MM_yyyy__hh_mm_ss").format(new Date());
        File targetFile = new File(currentTestScreenshotDir, fileName + " " + screenshotTimestamp + ".png");

        // 复制截图到目标位置
        Cache.copyFile(scrFile, targetFile);
    }
}

关键说明

  • initTestScreenshotDir() 方法:在每次测试开始时调用一次,创建本次测试的专属文件夹。如果忘记调用,截图方法会自动触发初始化。
  • mkdirs() 方法:自动创建所有不存在的父目录,避免因路径层级问题导致创建失败。
  • 保留截图文件名内的时间戳:区分同一次测试中不同步骤的截图,方便后续排查问题。
  • 根目录定义为常量:便于统一修改存储路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 04:45:43