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
2 changes: 1 addition & 1 deletion src/main/java/io/appium/java_client/AppiumDriver.java
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
@SuppressWarnings("unchecked")
public class AppiumDriver<T extends WebElement>
extends DefaultGenericMobileDriver<T> implements ComparesImages, FindsByImage<T>, FindsByCustom<T>,
ExecutesDriverScript, LogsEvents {
ExecutesDriverScript, LogsEvents, HasSettings {

private static final ErrorHandler errorHandler = new ErrorHandler(new ErrorCodesMobile(), true);
// frequently used command parameters
Expand Down
20 changes: 10 additions & 10 deletions src/main/java/io/appium/java_client/HasSettings.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,10 @@
import static io.appium.java_client.MobileCommand.getSettingsCommand;
import static io.appium.java_client.MobileCommand.setSettingsCommand;

import com.google.common.collect.ImmutableMap;

import org.openqa.selenium.remote.Response;

import java.util.Map;


public interface HasSettings extends ExecutesMethod {

/**
Expand All @@ -34,22 +31,25 @@ public interface HasSettings extends ExecutesMethod {
* the method for the specific setting you want to change.
*
* @param setting Setting you wish to set.
* @param value value of the setting.
* @param value Value of the setting.
* @return Self instance for chaining.
*/
default void setSetting(Setting setting, Object value) {
CommandExecutionHelper.execute(this, setSettingsCommand(setting.toString(), value));
default HasSettings setSetting(Setting setting, Object value) {
return setSetting(setting.toString(), value);
}

/**
* Set a setting for this test session It's probably better to use a
* convenience function, rather than use this function directly. Try finding
* the method for the specific setting you want to change.
*
* @param setting Setting you wish to set.
* @param value value of the setting.
* @param settingName Setting name you wish to set.
* @param value Value of the setting.
* @return Self instance for chaining.
*/
default void setSetting(String setting, Object value) {
CommandExecutionHelper.execute(this, setSettingsCommand(setting, value));
default HasSettings setSetting(String settingName, Object value) {
CommandExecutionHelper.execute(this, setSettingsCommand(settingName, value));
return this;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,7 @@ interface HasAndroidSettings extends HasSettings {
* @return self instance for chaining
*/
default HasAndroidSettings ignoreUnimportantViews(Boolean compress) {
setSetting(Setting.IGNORE_UNIMPORTANT_VIEWS, compress);
return this;
return (HasAndroidSettings) setSetting(Setting.IGNORE_UNIMPORTANT_VIEWS, compress);
}

/**
Expand All @@ -45,8 +44,7 @@ default HasAndroidSettings ignoreUnimportantViews(Boolean compress) {
* @return self instance for chaining
*/
default HasAndroidSettings configuratorSetWaitForIdleTimeout(Duration timeout) {
setSetting(Setting.WAIT_FOR_IDLE_TIMEOUT, timeout.toMillis());
return this;
return (HasAndroidSettings) setSetting(Setting.WAIT_FOR_IDLE_TIMEOUT, timeout.toMillis());
}

/**
Expand All @@ -57,8 +55,7 @@ default HasAndroidSettings configuratorSetWaitForIdleTimeout(Duration timeout) {
* @return self instance for chaining
*/
default HasAndroidSettings configuratorSetWaitForSelectorTimeout(Duration timeout) {
setSetting(Setting.WAIT_FOR_SELECTOR_TIMEOUT, timeout.toMillis());
return this;
return (HasAndroidSettings) setSetting(Setting.WAIT_FOR_SELECTOR_TIMEOUT, timeout.toMillis());
}

/**
Expand All @@ -69,8 +66,7 @@ default HasAndroidSettings configuratorSetWaitForSelectorTimeout(Duration timeou
* @return self instance for chaining
*/
default HasAndroidSettings configuratorSetScrollAcknowledgmentTimeout(Duration timeout) {
setSetting(Setting.WAIT_SCROLL_ACKNOWLEDGMENT_TIMEOUT, timeout.toMillis());
return this;
return (HasAndroidSettings) setSetting(Setting.WAIT_SCROLL_ACKNOWLEDGMENT_TIMEOUT, timeout.toMillis());
}

/**
Expand All @@ -81,8 +77,7 @@ default HasAndroidSettings configuratorSetScrollAcknowledgmentTimeout(Duration t
* @return self instance for chaining
*/
default HasAndroidSettings configuratorSetKeyInjectionDelay(Duration delay) {
setSetting(Setting.KEY_INJECTION_DELAY, delay.toMillis());
return this;
return (HasAndroidSettings) setSetting(Setting.KEY_INJECTION_DELAY, delay.toMillis());
}

/**
Expand All @@ -93,8 +88,7 @@ default HasAndroidSettings configuratorSetKeyInjectionDelay(Duration delay) {
* @return self instance for chaining
*/
default HasAndroidSettings configuratorSetActionAcknowledgmentTimeout(Duration timeout) {
setSetting(Setting.WAIT_ACTION_ACKNOWLEDGMENT_TIMEOUT, timeout.toMillis());
return this;
return (HasAndroidSettings) setSetting(Setting.WAIT_ACTION_ACKNOWLEDGMENT_TIMEOUT, timeout.toMillis());
}

/**
Expand All @@ -111,8 +105,7 @@ default HasAndroidSettings configuratorSetActionAcknowledgmentTimeout(Duration t
* @return self instance for chaining
*/
default HasAndroidSettings normalizeTagNames(boolean enabled) {
setSetting(Setting.NORMALIZE_TAG_NAMES, enabled);
return this;
return (HasAndroidSettings) setSetting(Setting.NORMALIZE_TAG_NAMES, enabled);
}

/**
Expand All @@ -124,8 +117,7 @@ default HasAndroidSettings normalizeTagNames(boolean enabled) {
* @return self instance for chaining
*/
default HasAndroidSettings setShouldUseCompactResponses(boolean enabled) {
setSetting(Setting.SHOULD_USE_COMPACT_RESPONSES, enabled);
return this;
return (HasAndroidSettings) setSetting(Setting.SHOULD_USE_COMPACT_RESPONSES, enabled);
}

/**
Expand All @@ -136,8 +128,7 @@ default HasAndroidSettings setShouldUseCompactResponses(boolean enabled) {
* @return self instance for chaining
*/
default HasAndroidSettings setElementResponseAttributes(String attrNames) {
setSetting(Setting.ELEMENT_RESPONSE_ATTRIBUTES, attrNames);
return this;
return (HasAndroidSettings) setSetting(Setting.ELEMENT_RESPONSE_ATTRIBUTES, attrNames);
}

/**
Expand All @@ -148,8 +139,7 @@ default HasAndroidSettings setElementResponseAttributes(String attrNames) {
* @return self instance for chaining
*/
default HasAndroidSettings allowInvisibleElements(boolean enabled) {
setSetting(Setting.ALLOW_INVISIBLE_ELEMENTS, enabled);
return this;
return (HasAndroidSettings) setSetting(Setting.ALLOW_INVISIBLE_ELEMENTS, enabled);
}

/**
Expand All @@ -162,8 +152,7 @@ default HasAndroidSettings allowInvisibleElements(boolean enabled) {
* @return self instance for chaining
*/
default HasAndroidSettings enableNotificationListener(boolean enabled) {
setSetting(Setting.ENABLE_NOTIFICATION_LISTENER, enabled);
return this;
return (HasAndroidSettings) setSetting(Setting.ENABLE_NOTIFICATION_LISTENER, enabled);
}

/**
Expand All @@ -174,8 +163,7 @@ default HasAndroidSettings enableNotificationListener(boolean enabled) {
* @return self instance for chaining
*/
default HasAndroidSettings shutdownOnPowerDisconnect(boolean enabled) {
setSetting(Setting.SHUTDOWN_ON_POWER_DISCONNECT, enabled);
return this;
return (HasAndroidSettings) setSetting(Setting.SHUTDOWN_ON_POWER_DISCONNECT, enabled);
}

/**
Expand All @@ -188,7 +176,6 @@ default HasAndroidSettings shutdownOnPowerDisconnect(boolean enabled) {
* @return self instance for chaining
*/
default HasAndroidSettings setTrackScrollEvents(boolean enabled) {
setSetting(Setting.TRACK_SCROLL_EVENTS, enabled);
return this;
return (HasAndroidSettings) setSetting(Setting.TRACK_SCROLL_EVENTS, enabled);
}
}
27 changes: 9 additions & 18 deletions src/main/java/io/appium/java_client/ios/HasIOSSettings.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,7 @@ interface HasIOSSettings extends HasSettings {
* @return self instance for chaining
*/
default HasIOSSettings nativeWebTap(Boolean enabled) {
setSetting(Setting.NATIVE_WEB_TAP, enabled);
return this;
return (HasIOSSettings) setSetting(Setting.NATIVE_WEB_TAP, enabled);
}

/**
Expand All @@ -41,8 +40,7 @@ default HasIOSSettings nativeWebTap(Boolean enabled) {
* @return self instance for chaining
*/
default HasIOSSettings setShouldUseCompactResponses(boolean enabled) {
setSetting(Setting.SHOULD_USE_COMPACT_RESPONSES, enabled);
return this;
return (HasIOSSettings) setSetting(Setting.SHOULD_USE_COMPACT_RESPONSES, enabled);
}

/**
Expand All @@ -53,8 +51,7 @@ default HasIOSSettings setShouldUseCompactResponses(boolean enabled) {
* @return self instance for chaining
*/
default HasIOSSettings setElementResponseAttributes(String attrNames) {
setSetting(Setting.ELEMENT_RESPONSE_ATTRIBUTES, attrNames);
return this;
return (HasIOSSettings) setSetting(Setting.ELEMENT_RESPONSE_ATTRIBUTES, attrNames);
}

/**
Expand All @@ -66,8 +63,7 @@ default HasIOSSettings setElementResponseAttributes(String attrNames) {
* @return self instance for chaining
*/
default HasIOSSettings setMjpegServerScreenshotQuality(int quality) {
setSetting(Setting.MJPEG_SERVER_SCREENSHOT_QUALITY, quality);
return this;
return (HasIOSSettings) setSetting(Setting.MJPEG_SERVER_SCREENSHOT_QUALITY, quality);
}

/**
Expand All @@ -79,8 +75,7 @@ default HasIOSSettings setMjpegServerScreenshotQuality(int quality) {
* @return self instance for chaining
*/
default HasIOSSettings setMjpegServerFramerate(int framerate) {
setSetting(Setting.MJPEG_SERVER_FRAMERATE, framerate);
return this;
return (HasIOSSettings) setSetting(Setting.MJPEG_SERVER_FRAMERATE, framerate);
}

/**
Expand All @@ -92,8 +87,7 @@ default HasIOSSettings setMjpegServerFramerate(int framerate) {
* @return self instance for chaining
*/
default HasIOSSettings setScreenshotQuality(int quality) {
setSetting(Setting.SCREENSHOT_QUALITY, quality);
return this;
return (HasIOSSettings) setSetting(Setting.SCREENSHOT_QUALITY, quality);
}

/**
Expand All @@ -104,8 +98,7 @@ default HasIOSSettings setScreenshotQuality(int quality) {
* @return self instance for chaining
*/
default HasIOSSettings setMjpegScalingFactor(int scale) {
setSetting(Setting.MJPEG_SCALING_FACTOR, scale);
return this;
return (HasIOSSettings) setSetting(Setting.MJPEG_SCALING_FACTOR, scale);
}

/**
Expand All @@ -115,8 +108,7 @@ default HasIOSSettings setMjpegScalingFactor(int scale) {
* @return self instance for chaining
*/
default HasIOSSettings setKeyboardAutocorrection(boolean enabled) {
setSetting(Setting.KEYBOARD_AUTOCORRECTION, enabled);
return this;
return (HasIOSSettings) setSetting(Setting.KEYBOARD_AUTOCORRECTION, enabled);
}

/**
Expand All @@ -126,7 +118,6 @@ default HasIOSSettings setKeyboardAutocorrection(boolean enabled) {
* @return self instance for chaining
*/
default HasIOSSettings setKeyboardPrediction(boolean enabled) {
setSetting(Setting.KEYBOARD_PREDICTION, enabled);
return this;
return (HasIOSSettings) setSetting(Setting.KEYBOARD_PREDICTION, enabled);
}
}
8 changes: 6 additions & 2 deletions src/test/java/io/appium/java_client/ios/IOSAlertTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public class IOSAlertTest extends AppIOSTest {
private static final long ALERT_TIMEOUT_SECONDS = 5;
private static final int CLICK_RETRIES = 2;

private WebDriverWait waiting = new WebDriverWait(driver, ALERT_TIMEOUT_SECONDS);
private final WebDriverWait waiter = new WebDriverWait(driver, ALERT_TIMEOUT_SECONDS);
private static final String iOSAutomationText = "show alert";

private void ensureAlertPresence() {
Expand All @@ -47,7 +47,11 @@ private void ensureAlertPresence() {
while (true) {
try {
driver.findElement(MobileBy.AccessibilityId(iOSAutomationText)).click();
waiting.until(alertIsPresent());
} catch (WebDriverException e) {
// ignore
}
try {
waiter.until(alertIsPresent());
return;
} catch (TimeoutException e) {
retry++;
Expand Down