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

最近做项目,需要用到截图的功能,就是给一个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的网页,下面是截出来的效果图:

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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
根据引用中的信息,微软工程师已经解决了谷歌浏览器在拖放文件时的问题,并将解决方案合并到了微软浏览器的最新稳定版中。现在,当用户在微软浏览器中拖放文件时,文件会在新标签页中加载,而不会直接覆盖当前内容。而根据引用中的信息,谷歌浏览器的插件是可以让程序员更好地使用浏览器的工具,而引用中则提到了有道词典这个插件在Chrome浏览器下很受国内程序员的喜欢。所以谷歌浏览器驱动与其未同步更新,但是这并不影响程序员使用浏览器插件来提升工作效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [谷歌浏览器修复_微软已经在Edge里解决谷歌浏览器让人讨厌的细节错误](https://blog.csdn.net/weixin_39602637/article/details/111340389)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [精挑41款,好用到爆的谷歌浏览器插件,每位程序员日常编程必备](https://blog.csdn.net/Java_stud/article/details/121261254)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Memory_2020

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

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

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

打赏作者

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

抵扣说明:

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

余额充值