利用java调用谷歌浏览器驱动进行网页截图

本文介绍如何使用Java和Chromedriver实现网页截图功能。通过Maven项目引入selenium和commons-io依赖,配置ChromeOptions并利用Chromedriver进行无头模式截图,最终将截图保存为本地图片文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近做项目,需要用到截图的功能,就是给一个url地址,然后自动打开,截取出一个封面图片,保存到服务器上。前端有js可以支持截图,像phantomjs等js插件都可以实现,但是效果不是很好,有些页面渲染不出来。

phantom.js使用方法https://www.jianshu.com/p/074d7ab370e3

本次就介绍java使用chromedriver.exe谷歌浏览器驱动进行网页截图。

创建一个maven项目,在pom文件中加入以下依赖:

        <!--网页自动化测试-->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.9.1</version>
        </dependency>
        <!--commons.io文件拷贝用-->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>

在resources目录下新建一个driver目录:

然后在ChromeDriver Mirror下载与电脑谷歌浏览器对应版本的驱动,解压放到此driver目录下

编写main方法

 public static void main(String[] args)throws Exception  {
        String url = "http://echarts.baidu.com/examples/";
        Integer sleepTime = 5*1000;// 截图等待时间
        String targetPath = "D:/test.jpg";// 生成图片文件路径
        // 设置是否启用headless模式
        System. setProperty("java.awt.headless", "true");
        // 加载谷歌浏览器驱动
        URL resource = Test.class.getClassLoader().getResource("");
        String driverPath = java.net.URLDecoder.decode(resource.getPath(), "UTF-8") + "driver/chromedriver.exe";
        ChromeOptions option=new ChromeOptions();
        option.addArguments("disable-infobars");
        System.setProperty("webdriver.chrome.driver", driverPath);
        WebDriver driver = new ChromeDriver(option);
        driver.manage().window().maximize();
        driver.get(url);
        Thread.sleep(sleepTime);
        File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
        // 全屏
        FileUtils.copyFile(srcFile, new File(targetPath));
        System.out.println("===>截图完成...正在同步数据" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
//        robot.delay(3000);
        driver.quit();
    }

运行即可在D盘下生成一张jpg图片文件,我这里截的是echarts的网页,下面是截出来的效果图:

此方法截出来的图还算清晰,唯一的缺点就是调用方法的时候会打开一个浏览器窗口。如果有朋友还有其他更好的截图方法,欢迎交流。

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Memory_2020

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值