Selenium使用Java.io FileUtils.copyFile来动态目标文件名

时间:2014-06-18 13:23:29

标签: java selenium selenium-webdriver

截取屏幕截图并使用java io(带有Java的Webdriver)将该文件复制到我的本地文件夹中

File screenshot = ((TakesScreenshot) driver)
            .getScreenshotAs(OutputType.FILE);
    FileUtils.copyFile(screenshot, new File("d:\\pic\\report.jpg"));

我多次调用此方法,因此在这种情况下我不想重复文件名为" report.jpg"所以请提供一个建议如何动态更改该文件名

像 报告1 report2等,

3 个答案:

答案 0 :(得分:3)

一种非常简单的方法:

FileUtils.copyFile(screenshot, new File("d:\\pic\\report_" + System.currentTimeMillis() + ".jpg");

我希望你不要每毫秒做一次截图。 ; - )

您可以使用时间戳来提高可读性。

java.text.SimpleDateFormat sdf = new SimpleDateFormat("YYYYMMDD'T'HHMMSSsss");
String newFileName = "d:\\pic\\report_" + sdf.format(new java.util.Date()) + ".jpg";
FileUtils.copyFile(screenshot, newFileName);

另一种解决方案可能是在辅助类中使用静态计数器。

private static int count = 0;
public static void doScreenshot() {
    count++;
    String newFileName = "d:\\pic\\report_" + count + ".jpg";
    FileUtils.copyFile(screenshot, newFileName);
}

答案 1 :(得分:1)

您可以附加当前日期和时间,或者循环检查文件是否已存在,并在文件可用后附加数字。

日期和时间(更有意义):

Date currDate = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
String dateAndTime = dateFormat.format(currDate);
File reportFile = new File("d:\\pic\\report_" + dateAndTime + ".jpg");
File screenshot = ((TakesScreenshot) driver)
        .getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(screenshot, reportFile));

数字增量方法:

File reportFile;
int number = 0;
do {
    reportFile = new File("d:\\pic\\report" + number + ".jpg");
    number++;
} while (reportFile.exists());
File screenshot = ((TakesScreenshot) driver)
        .getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(screenshot, reportFile));

答案 2 :(得分:1)

有很多选择。

如果后缀编号很重要:

  • 在文件或数据库中保存生成它的次数
  • 获取包含上次生成文件名称的号码
  • 计算文件夹中的图像数量(一段时间后删除它们无效)

如果不重要:

  • 将日期时间与当前时间一起使用
  • 使用随机数