使用Webdriver截取屏幕截图后,图像未保存在所需文件夹中

时间:2014-06-06 09:36:20

标签: selenium selenium-webdriver webdriver

我正在尝试保存使用Webdriver拍摄的屏幕截图。我使用字符串来存储Filepath。但我无法将屏幕截图保存在所需的文件夹中。相反,所需的路径会附加在我正在尝试保存的文件的名称中。

public void takeScreenshot(String obj) throws IOException{

 driver= new FirefoxDriver();
 driver.manage().window().maximize();
 driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);

 baseUrl="http://northeastindiaholidays.com";
 driver.get(baseUrl);

 String Filepath="D:\\Selenium_sc";
 File SrcFile=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
 FileUtils.copy(SrcFile,new File(Filepath + obj+""+ getTimeStampValue() + ".png")
}

截取屏幕截图,但Selenium_Sc附加在文件名中,如“Selenium_Sc..imagename”。我如何将其保存到指定的文件夹。将文件路径作为字符串存在问题吗?

2 个答案:

答案 0 :(得分:1)

重点是你错过了路径分隔符,正如@Deepak指出的那样。

我可以添加的是,我建议在操作路径时使用java.nio.Pathjava.nio.Paths

对于加入路径,就像你的情况一样,你可以利用Paths.get。 E.g:

String screenshotsDir = "D:\\Selenium_sc";
String filename = obj+"_"+ getTimeStampValue() + ".png";
Path screenshotPath = Paths.get(screenshotsDir, filename);
File SrcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(SrcFile, screenshotPath.toFile())

注意方便方法Path#toFile(也有相反的方法:File#toPath)

PS:仅适用于JDK> = 7

答案 1 :(得分:0)

我使用了以下功能& snap存储在所需的文件夹中 -

public void takeScreenshot(String obj) throws IOException{
java.util.Date date= new java.util.Date();
 Timestamp t = new Timestamp(date.getTime());
 String dateNow = t.toString().replace(":","_");
 driver= new FirefoxDriver();
 driver.manage().window().maximize();
 driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
 baseUrl="http://northeastindiaholidays.com";
 driver.get(baseUrl);
 File SrcFile=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
 FileUtils.copyFile(SrcFile,new File("D:\\Selenium_sc\\"+dateNow+".png"));
}

}

您可以添加要传递给最后一行中的方法的String obj参数。只需确保路径分隔符(“\”)正确。例如。 -

 FileUtils.copyFile(SrcFile,new File("D:\\Selenium_sc\\"+obj+"\\"+dateNow+".png"));