无法浏览浏览器整页截屏

时间:2018-01-05 15:51:38

标签: java selenium selenium-webdriver screenshot

这是我的代码 代码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机器上测试过。

2 个答案:

答案 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);