diff --git a/src/main/java/io/appium/java_client/AppiumDriver.java b/src/main/java/io/appium/java_client/AppiumDriver.java index 1616053ac..0f109af2c 100644 --- a/src/main/java/io/appium/java_client/AppiumDriver.java +++ b/src/main/java/io/appium/java_client/AppiumDriver.java @@ -41,6 +41,7 @@ import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.remote.Response; import org.openqa.selenium.remote.html5.RemoteLocationContext; +import org.openqa.selenium.remote.http.ClientConfig; import org.openqa.selenium.remote.http.HttpClient; import org.openqa.selenium.remote.http.HttpMethod; @@ -83,6 +84,10 @@ public AppiumDriver(HttpCommandExecutor executor, Capabilities capabilities) { this.remoteAddress = executor.getAddressOfRemoteServer(); } + public AppiumDriver(ClientConfig clientConfig, Capabilities capabilities) { + this(new AppiumCommandExecutor(MobileCommand.commandRepository, clientConfig), capabilities); + } + public AppiumDriver(URL remoteAddress, Capabilities capabilities) { this(new AppiumCommandExecutor(MobileCommand.commandRepository, remoteAddress), capabilities); diff --git a/src/main/java/io/appium/java_client/android/AndroidDriver.java b/src/main/java/io/appium/java_client/android/AndroidDriver.java index 741a4b9f9..76810cac3 100644 --- a/src/main/java/io/appium/java_client/android/AndroidDriver.java +++ b/src/main/java/io/appium/java_client/android/AndroidDriver.java @@ -51,6 +51,7 @@ import org.openqa.selenium.Platform; import org.openqa.selenium.remote.HttpCommandExecutor; import org.openqa.selenium.remote.html5.RemoteLocationContext; +import org.openqa.selenium.remote.http.ClientConfig; import org.openqa.selenium.remote.http.HttpClient; import java.net.URL; @@ -182,6 +183,29 @@ public AndroidDriver(HttpClient.Factory httpClientFactory, Capabilities capabili super(httpClientFactory, ensurePlatformName(capabilities, ANDROID_PLATFORM)); } + /** + * Creates a new instance based on the given ClientConfig and {@code capabilities}. + * The HTTP client is default client generated by {@link HttpCommandExecutor#getDefaultClientFactory}. + * For example: + * + *
+ *
+ * ClientConfig clientConfig = ClientConfig.defaultConfig()
+ * .baseUri(URI.create("WebDriver URL"))
+ * .readTimeout(Duration.ofMinutes(5));
+ * UiAutomator2Options options = new UiAutomator2Options();
+ * AndroidDriver driver = new AndroidDriver(clientConfig, options);
+ *
+ *
+ *
+ * @param clientConfig take a look at {@link ClientConfig}
+ * @param capabilities take a look at {@link Capabilities}
+ *
+ */
+ public AndroidDriver(ClientConfig clientConfig, Capabilities capabilities) {
+ super(clientConfig, ensurePlatformName(capabilities, ANDROID_PLATFORM));
+ }
+
/**
* Creates a new instance based on {@code capabilities}.
*
diff --git a/src/main/java/io/appium/java_client/gecko/GeckoDriver.java b/src/main/java/io/appium/java_client/gecko/GeckoDriver.java
index bd85fcfc9..43d2072c8 100644
--- a/src/main/java/io/appium/java_client/gecko/GeckoDriver.java
+++ b/src/main/java/io/appium/java_client/gecko/GeckoDriver.java
@@ -22,6 +22,7 @@
import io.appium.java_client.service.local.AppiumServiceBuilder;
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.remote.HttpCommandExecutor;
+import org.openqa.selenium.remote.http.ClientConfig;
import org.openqa.selenium.remote.http.HttpClient;
import java.net.URL;
@@ -73,6 +74,29 @@ public GeckoDriver(HttpClient.Factory httpClientFactory, Capabilities capabiliti
super(httpClientFactory, ensureAutomationName(capabilities, AUTOMATION_NAME));
}
+ /**
+ * Creates a new instance based on the given ClientConfig and {@code capabilities}.
+ * The HTTP client is default client generated by {@link HttpCommandExecutor#getDefaultClientFactory}.
+ * For example:
+ *
+ *
+ *
+ * ClientConfig clientConfig = ClientConfig.defaultConfig()
+ * .baseUri(URI.create("WebDriver URL"))
+ * .readTimeout(Duration.ofMinutes(5));
+ * GeckoOptions options = new GeckoOptions();
+ * GeckoDriver driver = new GeckoDriver(clientConfig, options);
+ *
+ *
+ *
+ * @param clientConfig take a look at {@link ClientConfig}
+ * @param capabilities take a look at {@link Capabilities}
+ *
+ */
+ public GeckoDriver(ClientConfig clientConfig, Capabilities capabilities) {
+ super(clientConfig, ensureAutomationName(capabilities, AUTOMATION_NAME));
+ }
+
public GeckoDriver(Capabilities capabilities) {
super(ensureAutomationName(capabilities, AUTOMATION_NAME));
}
diff --git a/src/main/java/io/appium/java_client/ios/IOSDriver.java b/src/main/java/io/appium/java_client/ios/IOSDriver.java
index 01a848b87..18ecf3065 100644
--- a/src/main/java/io/appium/java_client/ios/IOSDriver.java
+++ b/src/main/java/io/appium/java_client/ios/IOSDriver.java
@@ -48,6 +48,7 @@
import org.openqa.selenium.remote.HttpCommandExecutor;
import org.openqa.selenium.remote.Response;
import org.openqa.selenium.remote.html5.RemoteLocationContext;
+import org.openqa.selenium.remote.http.ClientConfig;
import org.openqa.selenium.remote.http.HttpClient;
import java.net.URL;
@@ -171,6 +172,29 @@ public IOSDriver(HttpClient.Factory httpClientFactory, Capabilities capabilities
super(httpClientFactory, ensurePlatformName(capabilities, PLATFORM_NAME));
}
+ /**
+ * Creates a new instance based on the given ClientConfig and {@code capabilities}.
+ * The HTTP client is default client generated by {@link HttpCommandExecutor#getDefaultClientFactory}.
+ * For example:
+ *
+ *
+ *
+ * ClientConfig clientConfig = ClientConfig.defaultConfig()
+ * .baseUri(URI.create("WebDriver URL"))
+ * .readTimeout(Duration.ofMinutes(5));
+ * XCUITestOptions options = new XCUITestOptions();
+ * IOSDriver driver = new IOSDriver(clientConfig, options);
+ *
+ *
+ *
+ * @param clientConfig take a look at {@link ClientConfig}
+ * @param capabilities take a look at {@link Capabilities}
+ *
+ */
+ public IOSDriver(ClientConfig clientConfig, Capabilities capabilities) {
+ super(clientConfig, ensurePlatformName(capabilities, PLATFORM_NAME));
+ }
+
/**
* Creates a new instance based on {@code capabilities}.
*
diff --git a/src/main/java/io/appium/java_client/mac/Mac2Driver.java b/src/main/java/io/appium/java_client/mac/Mac2Driver.java
index a65497eaa..b76de5943 100644
--- a/src/main/java/io/appium/java_client/mac/Mac2Driver.java
+++ b/src/main/java/io/appium/java_client/mac/Mac2Driver.java
@@ -25,6 +25,7 @@
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.Platform;
import org.openqa.selenium.remote.HttpCommandExecutor;
+import org.openqa.selenium.remote.http.ClientConfig;
import org.openqa.selenium.remote.http.HttpClient;
import java.net.URL;
@@ -84,6 +85,30 @@ public Mac2Driver(HttpClient.Factory httpClientFactory, Capabilities capabilitie
capabilities, PLATFORM_NAME, AUTOMATION_NAME));
}
+ /**
+ * Creates a new instance based on the given ClientConfig and {@code capabilities}.
+ * The HTTP client is default client generated by {@link HttpCommandExecutor#getDefaultClientFactory}.
+ * For example:
+ *
+ *
+ *
+ * ClientConfig clientConfig = ClientConfig.defaultConfig()
+ * .baseUri(URI.create("WebDriver URL"))
+ * .readTimeout(Duration.ofMinutes(5));
+ * Mac2Options options = new Mac2Options();
+ * Mac2Driver driver = new Mac2Driver(clientConfig, options);
+ *
+ *
+ *
+ * @param clientConfig take a look at {@link ClientConfig}
+ * @param capabilities take a look at {@link Capabilities}
+ *
+ */
+ public Mac2Driver(ClientConfig clientConfig, Capabilities capabilities) {
+ super(clientConfig, ensurePlatformAndAutomationNames(
+ capabilities, PLATFORM_NAME, AUTOMATION_NAME));
+ }
+
public Mac2Driver(Capabilities capabilities) {
super(ensurePlatformAndAutomationNames(capabilities, PLATFORM_NAME, AUTOMATION_NAME));
}
diff --git a/src/main/java/io/appium/java_client/remote/AppiumCommandExecutor.java b/src/main/java/io/appium/java_client/remote/AppiumCommandExecutor.java
index 463e14c38..01c551fb4 100644
--- a/src/main/java/io/appium/java_client/remote/AppiumCommandExecutor.java
+++ b/src/main/java/io/appium/java_client/remote/AppiumCommandExecutor.java
@@ -62,24 +62,33 @@ public class AppiumCommandExecutor extends HttpCommandExecutor {
private AppiumCommandExecutor(Map
+ *
+ * ClientConfig clientConfig = ClientConfig.defaultConfig()
+ * .baseUri(URI.create("WebDriver URL"))
+ * .readTimeout(Duration.ofMinutes(5));
+ * SafariOptions options = new SafariOptions();
+ * SafariDriver driver = new SafariDriver(clientConfig, options);
+ *
+ *
+ *
+ * @param clientConfig take a look at {@link ClientConfig}
+ * @param capabilities take a look at {@link Capabilities}
+ *
+ */
+ public SafariDriver(ClientConfig clientConfig, Capabilities capabilities) {
+ super(clientConfig, ensurePlatformAndAutomationNames(
+ capabilities, PLATFORM_NAME, AUTOMATION_NAME));
+ }
+
public SafariDriver(Capabilities capabilities) {
super(ensurePlatformAndAutomationNames(capabilities, PLATFORM_NAME, AUTOMATION_NAME));
}
diff --git a/src/main/java/io/appium/java_client/windows/WindowsDriver.java b/src/main/java/io/appium/java_client/windows/WindowsDriver.java
index 00b21a1ed..82af6e02d 100644
--- a/src/main/java/io/appium/java_client/windows/WindowsDriver.java
+++ b/src/main/java/io/appium/java_client/windows/WindowsDriver.java
@@ -28,6 +28,7 @@
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.Platform;
import org.openqa.selenium.remote.HttpCommandExecutor;
+import org.openqa.selenium.remote.http.ClientConfig;
import org.openqa.selenium.remote.http.HttpClient;
import java.net.URL;
@@ -79,6 +80,30 @@ public WindowsDriver(HttpClient.Factory httpClientFactory, Capabilities capabili
capabilities, PLATFORM_NAME, AUTOMATION_NAME));
}
+ /**
+ * Creates a new instance based on the given ClientConfig and {@code capabilities}.
+ * The HTTP client is default client generated by {@link HttpCommandExecutor#getDefaultClientFactory}.
+ * For example:
+ *
+ *
+ *
+ * ClientConfig clientConfig = ClientConfig.defaultConfig()
+ * .baseUri(URI.create("WebDriver URL"))
+ * .readTimeout(Duration.ofMinutes(5));
+ * WindowsOptions options = new WindowsOptions();
+ * WindowsDriver driver = new WindowsDriver(clientConfig, options);
+ *
+ *
+ *
+ * @param clientConfig take a look at {@link ClientConfig}
+ * @param capabilities take a look at {@link Capabilities}
+ *
+ */
+ public WindowsDriver(ClientConfig clientConfig, Capabilities capabilities) {
+ super(clientConfig, ensurePlatformAndAutomationNames(
+ capabilities, PLATFORM_NAME, AUTOMATION_NAME));
+ }
+
public WindowsDriver(Capabilities capabilities) {
super(ensurePlatformAndAutomationNames(capabilities, PLATFORM_NAME, AUTOMATION_NAME));
}