java中调用谷歌的无界浏览器对页面元素进行截图
调用谷歌的无界浏览器,最起码得先装一个谷歌浏览器,然后进行下一步,
添加pom依赖,或者单独导入jar包也可以
<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>4.0.0-alpha-1</version></dependency>
selenium的版本选高一点,我用3.x的版本报错了。
或者直接用这个链接下载,版本自己选
http://selenium-release.storage.googleapis.com/index.html
然后下载谷歌浏览器的无界驱动
http://chromedriver.storage.googleapis.com/index.html
版本根据自己电脑上的谷歌浏览器匹配就好,有可能你装的64位的,但驱动只有32位的,这没关系,我自己是64位的浏览器,用32位的驱动照样可以
下来就是代码:
#生成的图片存储位置
img.path = E:\\js\\phantomjs-2.1.1-windows\\bin\\report\\img\\
#调用的Chrome浏览器驱动存放位置
chromedriver.path = E:\\js\\phantomjs-2.1.1-windows\\bin\\chromedriver.exe
#调用的Chrome浏览器安装位置
chrome.path = C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe
最好把这些地址都做成配置文件,我用的是springboot,就直接放在properties文件里了。
public void createChart(C3Info c3Entiy){String url = getUrl(c3Entiy);log.info("[准备发送远程请求:{}]",url);String imgSavePath1 = reportPath + c3Entiy.getPrePriId() + "_chart12.png";String imgSavePath2 = reportPath + c3Entiy.getPrePriId() + "_chart34.png";try{//设置驱动地址System.setProperty("webdriver.chrome.driver",driverPath);ChromeOptions options = new ChromeOptions();//设置谷歌浏览器exe文件所在地址options.setBinary(chromePath);//这里是要执行的命令,如需修改截图页面的尺寸,修改--window-size的参数即可"--window-size=1920,1200",options.addArguments("--headless","--window-size=1920,1200","--disable-gpu","--ignore-certificate-errors");WebDriver driver = new ChromeDriver(options);driver.manage().window().maximize();// 访问页面driver.get(url);// 页面等待渲染时长,单位默认是秒Wait<WebDriver> wait = new WebDriverWait(driver, 10);wait.until(new ExpectedCondition<WebElement>() {public WebElement apply(WebDriver web) {//若无需等待渲染,return true即可。 return web.findElement(By.id("chart12"));//chart12就是需要截图的div的id}});Thread.sleep(6000); //等待页面完全加载WebElement element = driver.findElement(By.id("chart12"));File chart12File = element.getScreenshotAs(OutputType.FILE);FileUtils.copyFile(chart12File, new File(imgSavePath1));//可以多次截图,指向不同的div就可以element = driver.findElement(By.id("chart34"));File chart34File = element.getScreenshotAs(OutputType.FILE);FileUtils.copyFile(chart34File, new File(imgSavePath2));driver.quit();} catch (IOException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}log.info("[生成的图片完成]");}
效果图:
自己原创,有不当之处,欢迎下方留言指正交流
java中调用谷歌的无界浏览器对页面元素进行截图相关推荐
- java执行python脚本_使用Runtime.getRuntime().exec()在java中调用python脚本
举例有一个Python脚本叫test.py,现在想要在Java里调用这个脚本.假定这个test.py里面使用了拓展的包,使得pythoninterpreter之类内嵌的编译器无法使用,那么只能采用ja ...
- 如何在listary中调用谷歌翻译
文章目录 如何在listary中调用谷歌翻译 1具体设置 2测试一下 3跳转到浏览器 如何在listary中调用谷歌翻译 listary是一个非常好用的电脑搜索软件,我们也可以用它来web定位搜索. ...
- JAVA中调用阿里云语音通知Api并接收消息回执
JAVA中调用阿里云语音通知Api并接收消息回执 配置文件 需要的包 <dependency><groupId>com.aliyun</groupId><ar ...
- java中调用python
在Java中调用Python </h1><div class="clear"></div><div class="postBod ...
- 在Java中调用Python
写在前面 参考:https://www.cnblogs.com/nuccch/p/8435693.html 在微服务架构大行其道的今天,对于将程序进行嵌套调用的做法其实并不可取,甚至显得有些愚蠢.当然 ...
- 如何在java中调用js方法
[java] view plain copy/* * 加载脚本引擎,并在java中调用js方法 */ public void test2() { ScriptEngineManager manager ...
- java 中调用 Matlab 的函数
一.matlab版本必须支持java 在command 模式下面运行deploytool,如果支持该命令即可使用 二.matlab中function的书写 %定义一个函数operation(a,b), ...
- java 调用 go_实践总结:在 Java 中调用 Go 代码
在 Java 中调用 Go 的大致过程如下go --> cgo --> jna --> java 整个过程要解决的问题主要两个:数据类型在两种语言中如何转化 何时清理无用的数据 下面 ...
- java oracle sql 参数_oracle pl/sql之在java中调用带有输入输出参数的oracle存储过程...
只需注意一点输出参数是用CallableStatement里面的registerOutParameter方法注册进去 存储过程: import java.sql.CallableStatement; ...
最新文章
- MySQL视图的创建、修改与删除
- git submodule 删除及更新URL
- 4线电子围栏安装示意图_电子围栏报警系统安装施工过程(图解)
- linux和Windows之间互传文件
- 蚂蚁金服上市诞生千个亿万富翁,财富自由,离你不远!
- AppStore下载Xcode的文件
- JAVAEE智慧树第二次作业
- PortableApps使用入门
- 不熟悉 excel,使用 python 将数据按要求转置
- [论文笔记] ASFD 阅读笔记
- 使用html 语言建立一个简单的网页,如何用记事本建立简单的网页(1).doc
- 最新码支付源码+完整版+免挂监听回调+微信、支付宝、qq监控APP打包教程
- mysql-mysql介绍
- asp.net的web的gridview使用技巧
- UNIAPP实战项目笔记43 购物车页面修改收货地址和修改默认地址
- JS打开模态窗口showModalDialog
- matlab用牛顿迭代法求解方程,牛顿迭代法求方程解 程序如下
- L3-031 千手观音 拓扑排序+哈希表
- TMS320F280049学习笔记3_CMPSS 比较器子模块
- 学习 canvas (四) 绘制动画