java中如何用 firefox 截图

java如何使用 firefox 截图


前言

很多时候需要生成文档,但是word不能生成图形,可以截取浏览器生成好的图表。
首先服务器需要安装好firefox 浏览器,或者 chrome浏览器。


一、驱动

首先需要下载一个 浏览器驱动,geckodriver,可以在 github 中找一个。
https://github.com/mozilla/geckodriver/releases

二、java 代码

1. 驱动包 pom.xml

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.1.0</version>
</dependency>

2. WebDriver 进行截图

2.1.1 初始化驱动

private WebDriver getDriver() {
		FirefoxOptions firefoxOptions = new FirefoxOptions();
        FirefoxBinary firefoxBinary = new FirefoxBinary();
        //设置浏览器后台启动,不打开浏览器
        firefoxBinary.addCommandLineOptions("--headless");
        firefoxOptions.setBinary(firefoxBinary);
        // 设置浏览器的驱动路径
        System.setProperty("webdriver.gecko.driver", "D:\\geckodriver.exe");
        WebDriver webDriver = new FirefoxDriver(firefoxOptions);
        //设置页面的大小
        webDriver.manage().window().setSize(new Dimension(1820, 500));
        webDriver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
        //设置域名
        webDriver.get(StringUtils.join("http://localhost"));
        // 设置cookie
        webDriver.manage().addCookie(
                new Cookie("lang","zh-CN", "http://localhost", "/", DateUtil.add(new Date(), 1, Calendar.DATE)));
        return webDriver;

2.1.2 截图

// 请求地址
driver.get("http://localhost:8080/test/1");
//截图操作
byte[] bytes = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
try {
    BufferedImage image = ImageIO.read(new ByteArrayInputStream(bytes));
    WebElement ele = driver.findElement(By.id("divId"));
    Point point = ele.getLocation();
    int eleWidth = ele.getSize().getWidth();
    int eleHeight = ele.getSize().getHeight();
    BufferedImage targetImage = image.getSubimage(point.getX(), point.getY(), eleWidth, eleHeight);
    driver.quit(); //截图 完退出 浏览器,关系浏览器
    // targetIMage 就是截取好的图片流,可以写入word或者别的文档中了。
} catch (IOException e) {
    logger.error("火狐截图失败 {}", e.getMessage());
    throw new RuntimeException();
}

总结

小小的截图工具,工作中可以这个导出直观,简洁明了的 文档了,具体代码中还需要按照情况调试,在此记录大概流程。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值