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

问题描述 投票:-2回答:2

我正在尝试保存使用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”。我如何将其保存到指定的文件夹。将文件路径作为字符串存在问题吗?

selenium selenium-webdriver webdriver
2个回答
1
投票

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

我可以补充的是,我建议在操纵路径时使用java.nio.Pathjava.nio.Paths

对于加入路径(如您的情况),您可以利用Paths.get。例如。:

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


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"));
© www.soinside.com 2019 - 2024. All rights reserved.