java - 使用 htmlunitdriver 捕获屏幕截图?

标签 java selenium htmlunit capture htmlunit-driver

如何使用 HtmlUnitDriver 捕获屏幕截图?我发现当我使用 FirefoxDriver 时可以捕获,但我不想使用 Firefox。因此,请让我知道如何使用 HtmlUnitDriver 捕获图像。

我用谷歌搜索,但找到的解决方案都不适合我。请帮忙!

最佳答案

Flyingsaucer 是一个 Java 库,可让您 headless 地截取网页屏幕截图(无需在浏览器中打开页面)。以下代码将捕获整个页面的屏幕截图,调整大小为名为“screenshot.png”的图像。数字 1024 指定输出屏幕截图的宽度。在此处查找库 http://mvnrepository.com/artifact/org.xhtmlrenderer

import java.io.File;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import org.xhtmlrenderer.simple.Graphics2DRenderer;

public class RenderPage {

    public static void main(String[] args) throws Exception {
        try {
             String address = "http://www.w3.org";
             BufferedImage buff = Graphics2DRenderer.renderToImageAutoSize(address, 1024);
             ImageIO.write(buff, "png", new File("screenshot.png"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

您还可以使用方法Graphics2DRenderer.renderToImage(address,1024,1024);定义您自己的屏幕截图尺寸。

您会发现屏幕截图看起来就像在手机上呈现的一样。我不知道为什么会这样,但我猜你可以在某个地方更改 Flyingsaucer 的浏览器版本,以在不同的浏览器上模拟页面。

还有一点是,此代码不会对 www.google.com 进行屏幕截图,但显然这种类型的错误可以通过使用名为 JTidy 的库整理页面源代码来解决。

关于java - 使用 htmlunitdriver 捕获屏幕截图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28482690/

相关文章:

java - Apache Wicket Gmap3 不显示 div 中的 map

java - 如何优化这个for循环的计算速度?

c# - 在 Saucelabs 中使用 selenium c# 进行浏览器扩展测试

selenium - 通过 XPath 为 Selenium Web Scraping 选择一个元素

java - 如何使用 selenium webdriver 计算网页上可用的图像数量?

Java - 尝试使用 selenium webdriver (htmlunit) 登录网站时出现错误

java - 使用 HtmlUnit 在 DomNode 上调用 getByXPath

javascript - 使用服务器 Java 和 Javascript 客户端的 Apache Thrift 数组

java - J2EE Struts、Spring 和 Hibernate 框架问题

java - 如何为 HtmlUnit 中没有 value 属性的文本字段提供值?