diff --git a/java/src/org/openqa/selenium/devtools/Connection.java b/java/src/org/openqa/selenium/devtools/Connection.java index b3873c2d9e6c8..27f0105cf7dba 100644 --- a/java/src/org/openqa/selenium/devtools/Connection.java +++ b/java/src/org/openqa/selenium/devtools/Connection.java @@ -24,6 +24,8 @@ import java.io.Closeable; import java.io.StringReader; +import java.net.URI; +import java.net.URISyntaxException; import java.time.Duration; import java.util.ArrayList; import java.util.HashMap; @@ -51,6 +53,7 @@ import org.openqa.selenium.json.Json; import org.openqa.selenium.json.JsonInput; import org.openqa.selenium.json.JsonOutput; +import org.openqa.selenium.remote.http.ClientConfig; import org.openqa.selenium.remote.http.HttpClient; import org.openqa.selenium.remote.http.HttpRequest; import org.openqa.selenium.remote.http.WebSocket; @@ -72,7 +75,7 @@ public class Connection implements Closeable { new ConcurrentHashMap<>(); private final ReadWriteLock callbacksLock = new ReentrantReadWriteLock(true); private final Map, List>> eventCallbacks = new HashMap<>(); - private final HttpClient client; + private HttpClient client; private final String url; private final AtomicBoolean isClosed; @@ -90,6 +93,14 @@ boolean isClosed() { } void reopen() { + HttpClient.Factory clientFactory = HttpClient.Factory.createDefault(); + ClientConfig wsConfig = null; + try { + wsConfig = ClientConfig.defaultConfig().baseUri(new URI(this.url)); + } catch (URISyntaxException e) { + LOG.warning(e.getMessage()); + } + this.client = clientFactory.createClient(wsConfig); this.socket = this.client.openSocket(new HttpRequest(GET, url), new Listener()); } diff --git a/java/test/org/openqa/selenium/devtools/DevToolsReuseTest.java b/java/test/org/openqa/selenium/devtools/DevToolsReuseTest.java index 7af36fe5d8d63..f37abcaaa1bdd 100644 --- a/java/test/org/openqa/selenium/devtools/DevToolsReuseTest.java +++ b/java/test/org/openqa/selenium/devtools/DevToolsReuseTest.java @@ -19,7 +19,6 @@ import static org.assertj.core.api.Assertions.assertThat; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.remote.Augmenter; @@ -27,7 +26,6 @@ class DevToolsReuseTest extends DevToolsTestBase { @Test - @Disabled("JDK HTTP Client cannot get reused") public void shouldBeAbleToCloseDevToolsAndCreateNewInstance() { WebDriver driver = new Augmenter().augment(this.driver);