很多场景我们需要使用java程序操作,浏览器,比如说网络爬虫,html自动化点击,html渲染导出pdf,网页自动化操作等等,其实google有提供chrome的桥接包,就像数据库的driver,但是我们还查一个封装的比较好的api,终于被我找到了,这就是cdp4j.官方网址:https://github.com/webfolderio/cdp4j
cdp4j是Java库,具有清晰简洁的API,可自动执行基于Chrome / Chromium的浏览器。它使用Google Chrome DevTools协议来自动化基于Chrome / Chromium的浏览器。
1.cdp4j可以做什么?
- 自动填写表格。您可以轻松下载和上传文本,图像,处理PDF文件或截屏。
- 与Web应用程序之间的数据导入或导出。
- 从Web提取任何种类的数据。
- 自动化Web上传/下载。
2.主要特点
- 支持Chrome DevTools协议的全部功能(tip)
- PDF打印机
- 评估JavaScript
- 调用JavaScript函数
- 从浏览器(JavaScript)调用Java函数
- 支持本地CSS选择器引擎
- 支持XPath查询
- 隐身浏览(私有标签)
- 全页截屏
- 支持并行运行
- 自动等待DOM更改完成
- 触发鼠标事件(单击等)
- 发送键(文本,标签,回车等)
- 将日志条目(JavaScript,网络,存储等)从浏览器重定向到slf4j,log4j或控制台记录器。
- 拦截网络流量(请求和响应)
- 以编程方式上传文件而无需第三方解决方案(不需要AWT机械手等)
- 获取和设置元素属性
- 支持无头模式Chrome/Chromium
- 向后导航,前进,停止,重新加载
- 清除缓存,清除cookie,列出cookie
- 设置并获取表单元素的值
- 支持事件处理
- 支持所有知名的Java WebSocket库。
3.支持的Java版本
Oracle/OpenJDK, GraalVM & Substrate VM.
JRE和JDK都适合与此库一起使用。
注意:我们仅支持LTS版本(8和11)。
4.稳定性
该库适合在生产系统中使用。我们的库被许多知名企业客户使用。
5.下载
6.支持平台
cdp4j已在Windows 10和Ubuntu下进行了测试,但可以在可使用Java 8 + / Graal VM / Substrate VM和Chrome / Chromium / Microsoft Edge的任何平台上运行。
注意:尽管我们没有在Mac上执行测试套件,但是许多客户运行cdp4j不会出现任何问题。请不要犹豫,报告与Mac相关的错误。
7.发行说明
8.无头模式
可以使用with Options.headless(boolean)
选项以“无头”模式运行cdp4j 。
在Debian / Ubuntu上安装Chrome
#https ://askubuntu.com/questions/79280/how-to-install-chrome-browser-properly-via-command-line
sudo apt-get install libxss1 libappindicator1 libappindicator3-1 libindicator7
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome * .deb #可能显示“错误”,由下一行修复
sudo apt-get install -f
在RHEL / CentOS / Fedora上安装Chrome
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
sudo yum install google-chrome-stable_current_*.rpm
9.Java文档
10.记录日志
支持slf4j 1.x,log4j 1.x和自定义控制台记录器。
注意:如果您的首选日志记录库未列出,请告知我们。
11.WebSocket协议
DevTools协议使用WebSocket协议来自动化基于Chromium的浏览器。我们支持以下Java WebSocket库。
- Jre WebSocket Library (requires Java 11+).
- Jetty
- Undertow
- Vertx
- Tyrus
- TooTallNateWebSocket
- Tomcat
- Netty
- NvWebSocket
注意:如果您的首选WebSocket库未列出,请告知我们。
12.例子
我们提供了许多示例来展示如何使用cdp4j库。强烈建议在开始使用cdp4j之前运行这些示例。
13.设计原则
- 尽可能避免外部依赖。
- 仅支持基于Chrome / Chromium的浏览器。
- 支持Chrome DevTools协议的全部功能。
- 使API保持简单。
- 支持GraalVM & Substrate VM.