我想使用java在selenium中截取多个截图 例如,我正在尝试浏览我网站中的所有链接。导航时,如果有错误(例如找不到页面,服务器错误),我想单独捕获屏幕截图中的所有错误。目前它超越了前一个。
if(driver.getTitle().contains("404"))
{
System.out.println("Fail");
File scrFile = (TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
try {
FileUtils.copyFile(scrFile, new File("outputfile"));
}catch(IOException e){
e.printStackTrace();
}
}
else
{
System.out.println("Pass");
}
答案 0 :(得分:1)
要停止覆盖输出文件,您必须为每个屏幕截图指定一个唯一的名称 在代码中的某处,创建计数器
int counter = 1;
然后
FileUtils.copyFile(scrFile, new File("outputfile" + counter));
counter++;
因此,计数器在每个copyFile之后为目标文件指定一个不同的名称。
答案 1 :(得分:0)
我会做一些事情来清理这个过程。
将截图代码放入函数中。
在屏幕截图文件名中添加日期时间戳。这将为每个文件指定一个唯一的名称。
在屏幕截图文件名中添加一个简短的错误字符串。这将使您能够快速查看每种错误类型的数量。为每种错误类型创建文件夹的奖励积分,仅在该文件夹中放置该特定错误的屏幕截图。
您的脚本将如下所示
String imageOutputPath = "the path to the folder that stores the screenshots";
if (driver.getTitle().contains("404"))
{
takeScreenshotOfPage(driver, imageOutputPath + "404 error " + getDateTimeStamp() + ".png");
}
else if (some other error)
{
takeScreenshotOfPage(driver, imageOutputPath + "some other error " + getDateTimeStamp() + ".png");
}
else if (yet another error)
{
takeScreenshotOfPage(driver, imageOutputPath + "yet another error " + getDateTimeStamp() + ".png");
}
以及截屏的功能
public static void takeScreenshotOfPage(WebDriver driver, String filePath) throws IOException
{
File srcFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
BufferedImage srcImage = ImageIO.read(srcFile);
ImageIO.write(srcImage, "png", new File(filePath));
}
以及使文件名友好的日期时间戳
的功能public static String getDateTimeStamp()
{
// creates a date time stamp that is Windows OS filename compatible
return new SimpleDateFormat("MMM dd HH.mm.ss").format(Calendar.getInstance().getTime());
}
您最终会得到的文件名如下所示,它们按错误类型整齐排序,每个文件名都有唯一的文件名。
404 error Dec 02 13.21.18.png
404 error Dec 02 13.22.29.png
404 error Dec 02 13.22.39.png
some other error Dec 02 13.21.25.png
some other error Dec 02 13.22.50.png
some other error Dec 02 13.22.56.png
yet another error Dec 02 13.21.34.png
yet another error Dec 02 13.23.02.png
yet another error Dec 02 13.23.09.png