From 444589d411d5169a295396c8f5a650802b0fa52b Mon Sep 17 00:00:00 2001 From: fanyong920 <1023079644@qq.com> Date: Fri, 20 Dec 2024 10:30:26 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20firefox=20=E9=BB=98=E8=AE=A4=E5=8D=8F?= =?UTF-8?q?=E8=AE=AE=E6=98=AF=20Webdriver-bidi,chrome=20=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E6=98=AF=20CDP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruiyun/jvppeteer/cdp/core/Puppeteer.java | 10 +++++ .../jvppeteer/launch/BrowserLauncher.java | 37 +++++++------------ 2 files changed, 24 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/ruiyun/jvppeteer/cdp/core/Puppeteer.java b/src/main/java/com/ruiyun/jvppeteer/cdp/core/Puppeteer.java index 6e6a00c..7319ee5 100644 --- a/src/main/java/com/ruiyun/jvppeteer/cdp/core/Puppeteer.java +++ b/src/main/java/com/ruiyun/jvppeteer/cdp/core/Puppeteer.java @@ -1,6 +1,7 @@ package com.ruiyun.jvppeteer.cdp.core; import com.ruiyun.jvppeteer.api.core.Browser; +import com.ruiyun.jvppeteer.cdp.entities.Protocol; import com.ruiyun.jvppeteer.common.BrowserRevision; import com.ruiyun.jvppeteer.common.Environment; import com.ruiyun.jvppeteer.common.Product; @@ -15,6 +16,7 @@ import com.ruiyun.jvppeteer.util.StringUtil; import com.ruiyun.jvppeteer.util.ValidateUtil; import java.io.IOException; +import java.util.Objects; import static com.ruiyun.jvppeteer.common.Constant.PRODUCT_ENV; @@ -79,6 +81,14 @@ public static Browser rawLaunch(LaunchOptions options, Puppeteer puppeteer) thro if (StringUtil.isNotBlank(options.getCacheDir())) { puppeteer.setCacheDir(options.getCacheDir()); } + //默认协议,chrome -> CDP ,firefox -> WebDriverBiDi + if (Objects.isNull(options.getProtocol())) { + if (Objects.equals(options.getProduct(), Product.Firefox)) { + options.setProtocol(Protocol.WebDriverBiDi); + } else { + options.setProtocol(Protocol.CDP); + } + } adoptLauncher(puppeteer); return puppeteer.getLauncher().launch(options); } diff --git a/src/main/java/com/ruiyun/jvppeteer/launch/BrowserLauncher.java b/src/main/java/com/ruiyun/jvppeteer/launch/BrowserLauncher.java index 05256a2..15898f7 100644 --- a/src/main/java/com/ruiyun/jvppeteer/launch/BrowserLauncher.java +++ b/src/main/java/com/ruiyun/jvppeteer/launch/BrowserLauncher.java @@ -156,10 +156,20 @@ protected Browser createBrowser(LaunchOptions options, List chromeArgume if (usePipe) { throw new LaunchException("Not supported pipe connect to browser"); } else { - if (Objects.equals(options.getProduct(), Product.Firefox)) { + if (Protocol.CDP.equals(options.getProtocol())) { runner.start(); String endpoint = this.waitForWSEndpoint(options.getTimeout(), options.getDumpio(), options.getProtocol(), runner.getProcess()); - if (Protocol.WebDriverBiDi.equals(options.getProtocol())) { + ConnectionTransport transport = WebSocketTransportFactory.create(endpoint); + connection = new CdpConnection(endpoint, transport, options.getSlowMo(), options.getProtocolTimeout()); + runner.setConnection(connection); + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("Connect to browser by websocket url: {}", endpoint); + } + return createCdpBrowser(options, defaultArgs, runner, connection); + } else { + if (Objects.equals(options.getProduct(), Product.Firefox)) { + runner.start(); + String endpoint = this.waitForWSEndpoint(options.getTimeout(), options.getDumpio(), options.getProtocol(), runner.getProcess()); ConnectionTransport transport = WebSocketTransportFactory.create(endpoint + "/session"); connection = new BidiConnection(endpoint + "/session", transport, options.getSlowMo(), options.getProtocolTimeout()); runner.setConnection(connection); @@ -169,27 +179,7 @@ protected Browser createBrowser(LaunchOptions options, List chromeArgume Runnable closeCallback = runner::closeBrowser; return createBiDiBrowser((BidiConnection) connection, closeCallback, runner.getProcess(), options); } else { - ConnectionTransport transport = WebSocketTransportFactory.create(endpoint); - connection = new CdpConnection(endpoint, transport, options.getSlowMo(), options.getProtocolTimeout()); - runner.setConnection(connection); - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("Connect to browser by websocket url: {}", endpoint); - } - return createCdpBrowser(options, defaultArgs, runner, connection); - } - } else { - if (Objects.equals(options.getProtocol(), Protocol.CDP)) { - runner.start(); - String endpoint = this.waitForWSEndpoint(options.getTimeout(), options.getDumpio(), options.getProtocol(), runner.getProcess()); - ConnectionTransport transport = WebSocketTransportFactory.create(endpoint); - connection = new CdpConnection(endpoint, transport, options.getSlowMo(), options.getProtocolTimeout()); - runner.setConnection(connection); - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("Connect to browser by websocket url: {}", endpoint); - } - return createCdpBrowser(options, defaultArgs, runner, connection); - } else { - throw new LaunchException("Chrome dose not support connect to browser by webdriver-bidi"); + throw new LaunchException("Chrome dont not support protocol: " + options.getProtocol() + " yet"); } } } @@ -198,6 +188,7 @@ protected Browser createBrowser(LaunchOptions options, List chromeArgume throw new LaunchException("Failed to launch the browser process: " + e.getMessage(), e); } } + /** * waiting for browser ws url *