如何使用aShot类通过selenium网络驱动程序捕获多个屏幕截图(不覆盖前一个(。我能够运行2个测试用例,可以看到两个测试用例的屏幕截图都被捕获了,但屏幕截图只被复制到当前用例的文件夹中。下面的代码我正在使用一个射击类拍摄完整的屏幕截图。
public static void captureFullPage() throws IOException
{
screenshotName = d.toString().replace(":", "_").replace(" ", "_")+ "PNG";
Screenshot screenshot = new AShot().shootingStrategy(ShootingStrategies.viewportPasting(1000)).takeScreenshot(driver);
String dest = System.getProperty("user.dir") + "\TestOutput\" + screenshotName;
ImageIO.write(screenshot.getImage(), "PNG", new File(dest));
//return dest;
}
我认为您的第一张截图被第二张截图覆盖了,所以您需要定义一个不同的路径/文件夹来保存第二张屏幕截图,以将两张屏幕截图保存在不同的名称下
将代码编写为
public void screenshotByAshot() throws IOException {
WebDriverManager.chromedriver().setup();
ChromeDriver driver = new ChromeDriver();
driver.get("URL");
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("ddMMyyyy_HHmmss");
LocalDateTime now = LocalDateTime.now();
String date = dtf.format(now);
AShot ashot = new AShot();
Screenshot ss = ashot.shootingStrategy(ShootingStrategies.viewportPasting(1000)).takeScreenshot(driver);
BufferedImage img = ss.getImage();
String dest = System.getProperty("user.dir");
File path = new File(dest + "//folder_name/file_name" + date + ".png");
ImageIO.write(img, "png", path);
}
此代码将帮助您每次使用不同名称拍摄屏幕截图,因为它的名称中包含时间戳,这样就不会覆盖以前的屏幕截图,您将获得所有屏幕截图。根据您的喜好对此代码进行更改。