Java 自动下载 Chromium
引入 ChromiumDownloader 库,该库可以下载与加载 Chromium 。ChromiumDownloader 是 selenium-java 的封装
<dependency>
<groupId>io.github.zimoyin</groupId>
<artifactId>ChromiumDownloader</artifactId>
<version>1.2.25</version>
</dependency>
1. 国内下载 Chromium (直连)
public static void main(String[] args) {
// 获取下载器(下载器构造方法有众多参数,如有需要可自行添加)
HuaweicloudChromiumDownloader downloader = new HuaweicloudChromiumDownloader();
// 获取 chromium loader
ChromiumLoader loader = new ChromiumLoader(downloader);
// 加载 chromium 如果不存在则下载,下载位置默认为 chrome/[版本]/
ChromeOptions options = loader.downloadAndLoad();
// 创建 chromium
ChromeDriver driver = new ChromeDriver(options);
driver.get("https://www.baidu.com");
}
2. 国外下载 Chromium
public static void main(String[] args) {
// 获取 chromium loader
// 使用默认下载器
ChromiumLoader loader = new ChromiumLoader();
// 加载 chromium 如果不存在则下载,下载位置默认为 chrome/[版本]/
ChromeOptions options = loader.downloadAndLoad();
// 创建 chromium
ChromeDriver driver = new ChromeDriver(options);
driver.get("https://www.baidu.com");
}
- 添加代理
public static void main(String[] args) {
// 默认谷歌下载器
ChromiumDownloader downloader = new ChromiumDownloader("127.0.0.1", 8070);
// 获取 chromium loader
ChromiumLoader loader = new ChromiumLoader(downloader);
// 加载 chromium 如果不存在则下载,下载位置默认为 chrome/[版本]/
ChromeOptions options = loader.downloadAndLoad();
// 创建 chromium
ChromeDriver driver = new ChromeDriver(options);
driver.get("https://www.baidu.com");
}
如果不想使用下载功能可以使用 EmptyDownloader
3. ChromiumEx
ChromiumEx 是对 ChromeDriver 的简略封装,提供了部分监听功能,比如监听标签创建,关闭,浏览器关闭,控制台日志等
public static void main(String[] args) {
ChromiumDownloader downloader = new ChromiumDownloader("127.0.0.1", 8070);
ChromiumLoader loader = new ChromiumLoader(downloader);
ChromeOptions options = loader.downloadAndLoad();
ChromeDriver driver = new ChromeDriver(options);
// 创建 chromium 扩展
// ChromiumEx 可以与 ChromeDriver 共同使用但是使用不当可能会造成意外的情况
ChromiumEx chromium = new ChromiumEx(driver);
// 阻塞等待 chromium 关闭
chromium.blockUntilQuit(it->{
// 打开一个网页
// window 是对标签页的封装
CWindow window = it.get("https://baidu.com");
// 获取当前的 CWindow
CWindow window1 = it.getWindow();
});
}
- Kotlin 直接使用 ChromeDriver.xxxx 即可,所有的方法以作为 ChromeDriver 的拓展
ChromeDriver(options).blockUntilQuitSuspend {
get(qr_code)
window.cookieManager.apply {
add("cna",cna)
add("ucsession",ucsession)
add("isg",isg)
}
window.cookieManager.cookies.forEach {
println("${it.domain} = ${it.name}:${it.value}")
}
}
4. CWindow
CWindow 是对标签页的封装, 提供了众多封装,可以做到对任意一个 CWindow 进行操作,当对 CWindow 进行操作打的时候,会切换到特定的标签页进行操作
5. ChromeOptionsExKt
ChromeOptionsExKt 是封装了对 ChromeOptions 的一些拓展方法
options.enableHeadless()
// ....
- 当然Java 也可以使用
ChromeOptionsExKt.enableHeadless(options);
//....