在Chrome中获取整页截图,无需拼接图像

时间:2016-08-09 13:29:31

标签: google-chrome selenium screenshot

我正在寻找使用selenium在Chrome中获取整页截图的选项。似乎默认的屏幕截图选项仅采用浏览器视图端口大小的可见部分。

我尝试实现我在互联网上阅读的解决方法,我可以通过滚动使用Javascript拍摄多个屏幕截图,然后缝合图像以使其成为完整的页面截图。但是,在某些情况下,最终图像会与原始页面重叠并断开连接。

我还读到以下代码可以使用Chrome获取全屏截图,但没有成功:

public class chrome_test_service {
public static void main(String[] args) throws IOException, InterruptedException{
    System.setProperty("webdriver.chrome.driver", ".\chromedriver.exe");
    ChromeDriverService.Builder builder =  new ChromeDriverService.Builder();
    ChromeDriverService srvc = builder.usingDriverExecutable(new File(".\chromedriver.exe")).build();
    try {
        srvc.start();
    } catch (IOException e) {
        e.printStackTrace();
    }

    WebDriver driver = new ChromeDriver(srvc);
    JavascriptExecutor js = (JavascriptExecutor) driver;
    driver.get("http://www.google.com");
    WebElement searchBox = driver.findElement(By.name("q"));
    searchBox.sendKeys("Chrome Driver");
    Thread.sleep(2000);
    Object width=js.executeScript("return Math.max(document.body.scrollWidth, document.body.offsetWidth, document.documentElement.clientWidth, document.documentElement.scrollWidth, document.documentElement.offsetWidth);");
    Object height=js.executeScript("return Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight);");
    Dimension dimension = new Dimension(Integer.parseInt(width.toString()), Integer.parseInt(height.toString()));
    driver.manage().window().setSize(dimension);
    File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
    synchronized (scrFile) 
    {
        FileUtils.copyFile(scrFile, new File("abc.jpg"));   
    }
    driver.close();
    driver.quit();
}
}

有关使用Chrome获取Firefox等整页截图的任何建议吗?

0 个答案:

没有答案