我正在使用以下方法在我的项目中截屏:-
public String getScreenShot(String imageName) {
String snapShot = null;
try {
if (imageName.equals("")) {
imageName = "blank";
}
Calendar cal = Calendar.getInstance();
Date currentTimeStamp = cal.getTime();
String timeInFormat = formater.format(currentTimeStamp);
File src = driv.getScreenshotAs(OutputType.FILE);
String screenShotLocation = System.getProperty("user.dir") + "/screenPrints/";
File des = new File(screenShotLocation + imageName + "_" + timeInFormat + ".png");
FileUtils.copyFile(src, des);
snapShot = des.toString();
i++; //i counts the no of times control coming into getScreenShot method
System.out.println(i);
} catch (Exception e) {
System.out.println("The ScreenShot could not be taken\n" + e);
e.printStackTrace();
}
return snapShot;
}
我用下面的代码行调用上述方法: -
screen = getScreenShot("");
它进入 getScreenShot() 方法 158 次,并在控制台中将 i 值显示为 158。但它能够将 134 个屏幕打印保存在目标文件夹中。如果我们在调用此方法之前包含 1 秒的间隔,它可以在目标文件夹中保存确切的截图数量。
Thread.sleep(1000);
screen = getScreenShot("");
似乎执行速度如此之快,以至于它跳过了目标文件夹中的保存部分。Thread.sleep() 大大降低了性能。有人可以为此提出更好的解决方案。提前致谢。