簡體   English   中英

無法獲取瀏覽器全屏截圖

[英]Unable to take browser full page 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機器上進行測試。

您沒有提到您使用的是什么瀏覽器,但屏幕捕獲行為對於不同的瀏覽器而言卻有所不同。 只有Firefox才能拍攝完整的屏幕截圖,而無需使用AShot等輔助工具。 因此,您的“ code1”塊可能僅適用於Firefox。

您的“ code2”塊將不起作用,因為Java Robot庫僅適用於物理屏幕內容,因此,如果屏幕上沒有出現任何內容,則將看不到它。

但是AShot應該可以在任何瀏覽器上正常運行(至少對於Chrome和Firefox)。 我認為您的代碼有問題。 嘗試像這樣更改代碼:

Screenshot screenCapture = new AShot().shootingStrategy(ShootingStrategies.viewportPasting(1000)).takeScreenshot(driver);

您可以嘗試以下代碼。 它至少對我有用。

// Get the entire page screenshot
        File screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
        BufferedImage fullImg = ImageIO.read(screenshot);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM