[英]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.