这是我的代码 代码1:
scenario.embed(sharedDriver.getScreenshotAs(OutputType.BYTES), "image/png");
代码2:
BufferedImage image = null;
try {
image = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
File file = new File("image.png");
ImageIO.write(image, "png", file);
scenario.embed(FileUtils.readFileToByteArray(file), "image/png");
} catch (Exception e) {
e.printStackTrace();
}
代码3:
try {
Screenshot screenshot = new AShot().shootingStrategy(new ViewportPastingStrategy(2000)).takeScreenshot(sharedDriver);
File file = new File("screenshot.png");
ImageIO.write(screenshot.getImage(), "png", file);
scenario.embed(FileUtils.readFileToByteArray(file), "image/png");
} catch (Exception e) {
e.printStackTrace();
}
但上述代码均未采用整页截图。它只需要可见的浏览器屏幕。 我在linux机器上运行测试。我没有在Windows机器上测试过。
答案 0 :(得分:1)
您还没有提到您正在使用的浏览器,但屏幕捕获行为对于不同的浏览器的工作方式不同。只有Firefox能够在没有辅助工具(如AShot)的情况下拍摄完整的屏幕截图。所以你的" code1" block可能仅适用于Firefox。
您的" code2" block不起作用,因为Java Robot库仅适用于物理屏幕内容,因此如果屏幕上没有任何内容,它将无法显示。
然而,对于任何浏览器(至少对于Chrome和Firefox),AShot应该可以正常工作。我认为您的代码存在问题。尝试更改您的代码:Screenshot screenCapture = new AShot().shootingStrategy(ShootingStrategies.viewportPasting(1000)).takeScreenshot(driver);
答案 1 :(得分:-1)
您可以尝试以下代码。它至少对我有用。
// Get the entire page screenshot
File screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
BufferedImage fullImg = ImageIO.read(screenshot);