Skip to content

Commit

Permalink
feat: dep
Browse files Browse the repository at this point in the history
  • Loading branch information
cssxsh committed Feb 17, 2024
1 parent 77f764e commit bdfb8db
Show file tree
Hide file tree
Showing 6 changed files with 47 additions and 12 deletions.
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ repositories {

dependencies {
api("com.github.jknack:handlebars:4.3.1")
api("org.seleniumhq.selenium:selenium-java:4.16.1")
api("org.seleniumhq.selenium:selenium-java:4.17.0")
implementation("org.apache.commons:commons-compress:1.24.0")
implementation("org.tukaani:xz:1.9")
implementation("me.him188:kotlin-jvm-blocking-bridge-runtime:3.0.0-180.1")
Expand Down
4 changes: 2 additions & 2 deletions src/main/kotlin/xyz/cssxsh/selenium/RemoteWebDriverConfig.kt
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,9 @@ public interface RemoteWebDriverConfig {
public val browser: String get() = ""

/**
* Selenium HttpClientFactory,可选值: netty
* Selenium HttpClientFactory,可选值: jdk-http-client
*/
public val factory: String get() = "netty"
public val factory: String get() = ""

/**
* 浏览器启动参数
Expand Down
49 changes: 42 additions & 7 deletions src/main/kotlin/xyz/cssxsh/selenium/SeleniumInit.kt
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,12 @@ internal fun setupWebDriver(browser: String = ""): RemoteWebDriverSupplier {
setupEdgeDriver(folder = folder)
} else {
{ config ->
if (config.factory.isNotBlank()) System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
try {
org.openqa.selenium.remote.http.HttpClient.Factory.create(config.factory)
System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
} catch (_: Throwable) {
//
}
val options = EdgeOptions().also(config.toConsumer())
val port = try {
PortProber.findFreePort()
Expand All @@ -232,7 +237,12 @@ internal fun setupWebDriver(browser: String = ""): RemoteWebDriverSupplier {
setupChromeDriver(folder = folder, chromium = browser.contains(other = "Chromium", ignoreCase = true))
} else {
{ config ->
if (config.factory.isNotBlank()) System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
try {
org.openqa.selenium.remote.http.HttpClient.Factory.create(config.factory)
System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
} catch (_: Throwable) {
// ignore
}
val options = ChromeOptions().also(config.toConsumer())
val port = try {
PortProber.findFreePort()
Expand All @@ -255,7 +265,12 @@ internal fun setupWebDriver(browser: String = ""): RemoteWebDriverSupplier {
setupFirefoxDriver(folder = folder)
} else {
{ config ->
if (config.factory.isNotBlank()) System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
try {
org.openqa.selenium.remote.http.HttpClient.Factory.create(config.factory)
System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
} catch (_: Throwable) {
// ignore
}
val options = FirefoxOptions().also(config.toConsumer())
val port = try {
PortProber.findFreePort()
Expand Down Expand Up @@ -333,7 +348,12 @@ internal fun setupEdgeDriver(folder: File): RemoteWebDriverSupplier {
driver.setExecutable(true)

return { config ->
if (config.factory.isNotBlank()) System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
try {
org.openqa.selenium.remote.http.HttpClient.Factory.create(config.factory)
System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
} catch (_: Throwable) {
// ignore
}
val options = EdgeOptions().also(config.toConsumer())
if (binary.exists()) options.setBinary(binary)
val port = try {
Expand Down Expand Up @@ -416,7 +436,12 @@ internal fun fetchChromeDriver(folder: File, version: String): RemoteWebDriverSu

return { config ->
val options = ChromeOptions().also(config.toConsumer())
if (config.factory.isNotBlank()) System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
try {
org.openqa.selenium.remote.http.HttpClient.Factory.create(config.factory)
System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
} catch (_: Throwable) {
// ignore
}
val binary = File(System.getProperty(CHROME_BROWSER_BINARY, "chrome.exe"))
if (binary.exists()) options.setBinary(binary)
val port = try {
Expand Down Expand Up @@ -559,7 +584,12 @@ internal fun setupChromeDriver(folder: File, chromium: Boolean): RemoteWebDriver
driver.setExecutable(true)

return { config ->
if (config.factory.isNotBlank()) System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
try {
org.openqa.selenium.remote.http.HttpClient.Factory.create(config.factory)
System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
} catch (_: Throwable) {
// ignore
}
val options = ChromeOptions().also(config.toConsumer())
if (binary.exists()) options.setBinary(binary)
val port = try {
Expand Down Expand Up @@ -670,7 +700,12 @@ internal fun setupFirefoxDriver(folder: File): RemoteWebDriverSupplier {
driver.setExecutable(true)

return { config ->
if (config.factory.isNotBlank()) System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
try {
org.openqa.selenium.remote.http.HttpClient.Factory.create(config.factory)
System.setProperty(WEBDRIVER_HTTP_FACTORY, config.factory)
} catch (_: Throwable) {
// ignore
}
val options = FirefoxOptions().also(config.toConsumer())
if (binary.exists()) options.setBinary(binary.toPath())
val port = try {
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1 @@
org.openqa.selenium.remote.http.netty.NettyClient$Factory
org.openqa.selenium.remote.http.jdk.JdkHttpClient$Factory
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,5 @@ org.openqa.selenium.chrome.ChromeDriverService$Builder
org.openqa.selenium.edge.EdgeDriverService$Builder
org.openqa.selenium.firefox.GeckoDriverService$Builder
org.openqa.selenium.ie.InternetExplorerDriverService$Builder
org.openqa.selenium.opera.OperaDriverService$Builder
org.openqa.selenium.safari.SafariDriverService$Builder
org.openqa.selenium.safari.SafariTechPreviewDriverService$Builder
1 change: 1 addition & 0 deletions src/test/kotlin/xyz/cssxsh/selenium/SeleniumTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ internal abstract class SeleniumTest {
// System.setProperty("selenium.webdriver.verbose", "true")
org.slf4j.bridge.SLF4JBridgeHandler.removeHandlersForRootLogger()
org.slf4j.bridge.SLF4JBridgeHandler.install()
org.openqa.selenium.remote.http.HttpClient.Factory.createDefault()
}

protected val browsers by lazy {
Expand Down

0 comments on commit bdfb8db

Please sign in to comment.