如何通过 Selenium 和 Java 使用 AShot 库截取整页截图

2022-01-16 00:00:00 selenium webdriver screenshot java ashot

我尝试了下面的代码来截取整页截图.但只捕获可见区域,

I tried the below code for taking full page screenshot. But only the visible area is captured,

public void Fullscreen (WebDriver driver) 
{
    try {
        final Screenshot screenshot = new AShot().shootingStrategy(ShootingStrategies.viewportPasting(1000)).takeScreenshot(driver);
        final BufferedImage image = screenshot.getImage();
        ImageIO.write(image, "PNG", new File("D:\" + "AShot_BBC_Entire.png"));           
    } catch(Exception e){
        System.out.println(e.getMessage());
    }
}

推荐答案

在使用 Selenium Java Client v3.14.0、ChromeDriver v2.41、Chrome 时v 68.0 使用 ashot-1.4.4.jar 这是一个使用 ChromeDriver 水平和垂直截取 完整页面截图 的示例> 和 url https://jquery.com/ 的 aShot 库:

While working with Selenium Java Client v3.14.0, ChromeDriver v2.41, Chrome v 68.0 using ashot-1.4.4.jar here is an example to take the complete page screenshot both horizontally and vertically using ChromeDriver and aShot Library of the url https://jquery.com/:

  • 代码块:

  • Code Block:

import java.io.File;
import javax.imageio.ImageIO;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import ru.yandex.qatools.ashot.AShot;
import ru.yandex.qatools.ashot.Screenshot;
import ru.yandex.qatools.ashot.shooting.ShootingStrategies;

public class ashot_CompletePage {

    public static void main(String[] args) throws Exception {

        System.setProperty("god.bless.you", "C:\Utility\BrowserDrivers\chromedriver.exe");
        ChromeOptions options = new ChromeOptions();
        options.addArguments("start-maximized");
        options.addArguments("disable-infobars");
        options.addArguments("--disable-extensions"); 
        WebDriver driver =  new ChromeDriver(options);
        driver.get("https://jquery.com/");
        new WebDriverWait(driver, 20).until(ExpectedConditions.titleContains("jQuery"));
        Screenshot myScreenshot = new AShot().shootingStrategy(ShootingStrategies.viewportPasting(100)).takeScreenshot(driver);
        ImageIO.write(myScreenshot.getImage(),"PNG",new File("./Screenshots/elementScreenshot.png"));
        driver.quit();
    }
}

  • 截图:

  • Screenshots:

    您可以在 如何截取屏幕截图中找到详细讨论使用 Selenium WebDriver

  • 相关文章