Skip to content

Commit bdfb8db

Browse files
committed
feat: dep
1 parent 77f764e commit bdfb8db

6 files changed

Lines changed: 47 additions & 12 deletions

File tree

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ repositories {
2828

2929
dependencies {
3030
api("com.github.jknack:handlebars:4.3.1")
31-
api("org.seleniumhq.selenium:selenium-java:4.16.1")
31+
api("org.seleniumhq.selenium:selenium-java:4.17.0")
3232
implementation("org.apache.commons:commons-compress:1.24.0")
3333
implementation("org.tukaani:xz:1.9")
3434
implementation("me.him188:kotlin-jvm-blocking-bridge-runtime:3.0.0-180.1")

src/main/kotlin/xyz/cssxsh/selenium/RemoteWebDriverConfig.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,9 @@ public interface RemoteWebDriverConfig {
5858
public val browser: String get() = ""
5959

6060
/**
61-
* Selenium HttpClientFactory,可选值: netty
61+
* Selenium HttpClientFactory,可选值: jdk-http-client
6262
*/
63-
public val factory: String get() = "netty"
63+
public val factory: String get() = ""
6464

6565
/**
6666
* 浏览器启动参数

src/main/kotlin/xyz/cssxsh/selenium/SeleniumInit.kt

Lines changed: 42 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,12 @@ internal fun setupWebDriver(browser: String = ""): RemoteWebDriverSupplier {
210210
setupEdgeDriver(folder = folder)
211211
} else {
212212
{ config ->
213-
if (config.factory.isNotBlank()) System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
213+
try {
214+
org.openqa.selenium.remote.http.HttpClient.Factory.create(config.factory)
215+
System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
216+
} catch (_: Throwable) {
217+
//
218+
}
214219
val options = EdgeOptions().also(config.toConsumer())
215220
val port = try {
216221
PortProber.findFreePort()
@@ -232,7 +237,12 @@ internal fun setupWebDriver(browser: String = ""): RemoteWebDriverSupplier {
232237
setupChromeDriver(folder = folder, chromium = browser.contains(other = "Chromium", ignoreCase = true))
233238
} else {
234239
{ config ->
235-
if (config.factory.isNotBlank()) System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
240+
try {
241+
org.openqa.selenium.remote.http.HttpClient.Factory.create(config.factory)
242+
System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
243+
} catch (_: Throwable) {
244+
// ignore
245+
}
236246
val options = ChromeOptions().also(config.toConsumer())
237247
val port = try {
238248
PortProber.findFreePort()
@@ -255,7 +265,12 @@ internal fun setupWebDriver(browser: String = ""): RemoteWebDriverSupplier {
255265
setupFirefoxDriver(folder = folder)
256266
} else {
257267
{ config ->
258-
if (config.factory.isNotBlank()) System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
268+
try {
269+
org.openqa.selenium.remote.http.HttpClient.Factory.create(config.factory)
270+
System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
271+
} catch (_: Throwable) {
272+
// ignore
273+
}
259274
val options = FirefoxOptions().also(config.toConsumer())
260275
val port = try {
261276
PortProber.findFreePort()
@@ -333,7 +348,12 @@ internal fun setupEdgeDriver(folder: File): RemoteWebDriverSupplier {
333348
driver.setExecutable(true)
334349

335350
return { config ->
336-
if (config.factory.isNotBlank()) System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
351+
try {
352+
org.openqa.selenium.remote.http.HttpClient.Factory.create(config.factory)
353+
System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
354+
} catch (_: Throwable) {
355+
// ignore
356+
}
337357
val options = EdgeOptions().also(config.toConsumer())
338358
if (binary.exists()) options.setBinary(binary)
339359
val port = try {
@@ -416,7 +436,12 @@ internal fun fetchChromeDriver(folder: File, version: String): RemoteWebDriverSu
416436

417437
return { config ->
418438
val options = ChromeOptions().also(config.toConsumer())
419-
if (config.factory.isNotBlank()) System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
439+
try {
440+
org.openqa.selenium.remote.http.HttpClient.Factory.create(config.factory)
441+
System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
442+
} catch (_: Throwable) {
443+
// ignore
444+
}
420445
val binary = File(System.getProperty(CHROME_BROWSER_BINARY, "chrome.exe"))
421446
if (binary.exists()) options.setBinary(binary)
422447
val port = try {
@@ -559,7 +584,12 @@ internal fun setupChromeDriver(folder: File, chromium: Boolean): RemoteWebDriver
559584
driver.setExecutable(true)
560585

561586
return { config ->
562-
if (config.factory.isNotBlank()) System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
587+
try {
588+
org.openqa.selenium.remote.http.HttpClient.Factory.create(config.factory)
589+
System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
590+
} catch (_: Throwable) {
591+
// ignore
592+
}
563593
val options = ChromeOptions().also(config.toConsumer())
564594
if (binary.exists()) options.setBinary(binary)
565595
val port = try {
@@ -670,7 +700,12 @@ internal fun setupFirefoxDriver(folder: File): RemoteWebDriverSupplier {
670700
driver.setExecutable(true)
671701

672702
return { config ->
673-
if (config.factory.isNotBlank()) System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
703+
try {
704+
org.openqa.selenium.remote.http.HttpClient.Factory.create(config.factory)
705+
System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
706+
} catch (_: Throwable) {
707+
// ignore
708+
}
674709
val options = FirefoxOptions().also(config.toConsumer())
675710
if (binary.exists()) options.setBinary(binary.toPath())
676711
val port = try {
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
org.openqa.selenium.remote.http.netty.NettyClient$Factory
1+
org.openqa.selenium.remote.http.jdk.JdkHttpClient$Factory

src/main/resources/META-INF/services/org.openqa.selenium.remote.service.DriverService$Builder

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,5 @@ org.openqa.selenium.chrome.ChromeDriverService$Builder
22
org.openqa.selenium.edge.EdgeDriverService$Builder
33
org.openqa.selenium.firefox.GeckoDriverService$Builder
44
org.openqa.selenium.ie.InternetExplorerDriverService$Builder
5-
org.openqa.selenium.opera.OperaDriverService$Builder
65
org.openqa.selenium.safari.SafariDriverService$Builder
76
org.openqa.selenium.safari.SafariTechPreviewDriverService$Builder

src/test/kotlin/xyz/cssxsh/selenium/SeleniumTest.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ internal abstract class SeleniumTest {
2424
// System.setProperty("selenium.webdriver.verbose", "true")
2525
org.slf4j.bridge.SLF4JBridgeHandler.removeHandlersForRootLogger()
2626
org.slf4j.bridge.SLF4JBridgeHandler.install()
27+
org.openqa.selenium.remote.http.HttpClient.Factory.createDefault()
2728
}
2829

2930
protected val browsers by lazy {

0 commit comments

Comments
 (0)