Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/main/java/io/appium/java_client/AppiumDriver.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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);
Expand Down
24 changes: 24 additions & 0 deletions src/main/java/io/appium/java_client/android/AndroidDriver.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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:
*
* <pre>
*
* ClientConfig clientConfig = ClientConfig.defaultConfig()
* .baseUri(URI.create("WebDriver URL"))
* .readTimeout(Duration.ofMinutes(5));
* UiAutomator2Options options = new UiAutomator2Options();
* AndroidDriver driver = new AndroidDriver(clientConfig, options);
*
* </pre>
*
* @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}.
*
Expand Down
24 changes: 24 additions & 0 deletions src/main/java/io/appium/java_client/gecko/GeckoDriver.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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:
*
* <pre>
*
* ClientConfig clientConfig = ClientConfig.defaultConfig()
* .baseUri(URI.create("WebDriver URL"))
* .readTimeout(Duration.ofMinutes(5));
* GeckoOptions options = new GeckoOptions();
* GeckoDriver driver = new GeckoDriver(clientConfig, options);
*
* </pre>
*
* @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));
}
Expand Down
24 changes: 24 additions & 0 deletions src/main/java/io/appium/java_client/ios/IOSDriver.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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:
*
* <pre>
*
* ClientConfig clientConfig = ClientConfig.defaultConfig()
* .baseUri(URI.create("WebDriver URL"))
* .readTimeout(Duration.ofMinutes(5));
* XCUITestOptions options = new XCUITestOptions();
* IOSDriver driver = new IOSDriver(clientConfig, options);
*
* </pre>
*
* @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}.
*
Expand Down
25 changes: 25 additions & 0 deletions src/main/java/io/appium/java_client/mac/Mac2Driver.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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:
*
* <pre>
*
* ClientConfig clientConfig = ClientConfig.defaultConfig()
* .baseUri(URI.create("WebDriver URL"))
* .readTimeout(Duration.ofMinutes(5));
* Mac2Options options = new Mac2Options();
* Mac2Driver driver = new Mac2Driver(clientConfig, options);
*
* </pre>
*
* @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));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,24 +62,33 @@ public class AppiumCommandExecutor extends HttpCommandExecutor {

private AppiumCommandExecutor(Map<String, CommandInfo> additionalCommands, DriverService service,
URL addressOfRemoteServer,
HttpClient.Factory httpClientFactory) {
HttpClient.Factory httpClientFactory,
ClientConfig clientConfig) {
super(additionalCommands,
ClientConfig.defaultConfig()
.baseUrl(Require.nonNull("Server URL", ofNullable(service)
.map(DriverService::getUrl)
.orElse(addressOfRemoteServer)))
.readTimeout(DEFAULT_READ_TIMEOUT), httpClientFactory);
ofNullable(clientConfig).orElse(
ClientConfig.defaultConfig()
.baseUrl(Require.nonNull("Server URL", ofNullable(service)
.map(DriverService::getUrl)
.orElse(addressOfRemoteServer)))
.readTimeout(DEFAULT_READ_TIMEOUT)
),
ofNullable(httpClientFactory).orElseGet(HttpCommandExecutor::getDefaultClientFactory)
);
serviceOptional = ofNullable(service);
}

public AppiumCommandExecutor(Map<String, CommandInfo> additionalCommands, DriverService service,
HttpClient.Factory httpClientFactory) {
this(additionalCommands, checkNotNull(service), null, httpClientFactory);
this(additionalCommands, checkNotNull(service), null, httpClientFactory, null);
}

public AppiumCommandExecutor(Map<String, CommandInfo> additionalCommands,
URL addressOfRemoteServer, HttpClient.Factory httpClientFactory) {
this(additionalCommands, null, checkNotNull(addressOfRemoteServer), httpClientFactory);
this(additionalCommands, null, checkNotNull(addressOfRemoteServer), httpClientFactory, null);
}

public AppiumCommandExecutor(Map<String, CommandInfo> additionalCommands, ClientConfig clientConfig) {
this(additionalCommands, null, checkNotNull(clientConfig.baseUrl()), null, clientConfig);
}

public AppiumCommandExecutor(Map<String, CommandInfo> additionalCommands,
Expand Down
25 changes: 25 additions & 0 deletions src/main/java/io/appium/java_client/safari/SafariDriver.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,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;
Expand Down Expand Up @@ -81,6 +82,30 @@ public SafariDriver(HttpClient.Factory httpClientFactory, Capabilities capabilit
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:
*
* <pre>
*
* ClientConfig clientConfig = ClientConfig.defaultConfig()
* .baseUri(URI.create("WebDriver URL"))
* .readTimeout(Duration.ofMinutes(5));
* SafariOptions options = new SafariOptions();
* SafariDriver driver = new SafariDriver(clientConfig, options);
*
* </pre>
*
* @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));
}
Expand Down
25 changes: 25 additions & 0 deletions src/main/java/io/appium/java_client/windows/WindowsDriver.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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:
*
* <pre>
*
* ClientConfig clientConfig = ClientConfig.defaultConfig()
* .baseUri(URI.create("WebDriver URL"))
* .readTimeout(Duration.ofMinutes(5));
* WindowsOptions options = new WindowsOptions();
* WindowsDriver driver = new WindowsDriver(clientConfig, options);
*
* </pre>
*
* @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));
}
Expand Down