Selenium:无法使用aShot库获取完整页面截图

时间:2018-06-15 08:27:19

标签: java selenium selenium-chromedriver geckodriver ashot

我尝试使用Firefox gecko驱动程序和aShot Library水平和垂直拍摄整页截图。

但是,结果并不像预期的那样。看看:

enter image description here

driver.get("https://google.com");

Screenshot fpScreenshot = new AShot().shootingStrategy(ShootingStrategies.viewportPasting(1000)).takeScreenshot(driver);
ImageIO.write(fpScreenshot.getImage(),"JPEG",new File("FullPageScreenshot.jpg"));

看了很多变种,但没有任何效果。有趣的是,当我尝试使用旧的firefox版本(46)时,我可以在没有任何第三方库的情况下拍摄完整的屏幕截图。我试图使用最新的Firefox并拥有完整的屏幕截图功能。

任何帮助?

2 个答案:

答案 0 :(得分:2)

使用 ashot-1.4使用 Selenium Java Client v3.12.0 ChromeDriver v2.40 Chrome v 67.0 时。 4.jar 这是一个使用 ChromeDriver aShot Library 水平和垂直拍摄完整页面截图的示例em> url https://jquery.com/

  • 代码块:

    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();
        }
    }
    
  • 截图:

screenshot

答案 1 :(得分:2)

尝试:

Screenshot screenshot = new AShot().shootingStrategy(ShootingStrategies.viewportPasting(ShootingStrategies.scaling(1.75f), 1000)).takeScreenshot(driver);

其中1.75f是设备像素比率(您可以在浏览器控制台中运行window.devicePixelRatio;来找到它)。 如果仍然无法全屏显示,请将其更改为2f