diff --git a/src/main/java/io/appium/java_client/HasSettings.java b/src/main/java/io/appium/java_client/HasSettings.java index 3195bcf58..4a8bdfbff 100644 --- a/src/main/java/io/appium/java_client/HasSettings.java +++ b/src/main/java/io/appium/java_client/HasSettings.java @@ -37,6 +37,18 @@ public interface HasSettings extends ExecutesMethod { * @param value value of the setting. */ default void setSetting(Setting setting, Object value) { + CommandExecutionHelper.execute(this, setSettingsCommand(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. + */ + default void setSetting(String setting, Object value) { CommandExecutionHelper.execute(this, setSettingsCommand(setting, value)); } diff --git a/src/main/java/io/appium/java_client/MobileCommand.java b/src/main/java/io/appium/java_client/MobileCommand.java index aaf855468..ab0d3d756 100644 --- a/src/main/java/io/appium/java_client/MobileCommand.java +++ b/src/main/java/io/appium/java_client/MobileCommand.java @@ -469,9 +469,9 @@ public static ImmutableMap prepareArguments(String[] params, return new AbstractMap.SimpleEntry<>(GET_SETTINGS, ImmutableMap.of()); } - public static Map.Entry> setSettingsCommand(Setting setting, Object value) { + public static Map.Entry> setSettingsCommand(String setting, Object value) { return new AbstractMap.SimpleEntry<>(SET_SETTINGS, prepareArguments("settings", - prepareArguments(setting.toString(), value))); + prepareArguments(setting, value))); } /** diff --git a/src/test/java/io/appium/java_client/android/SettingTest.java b/src/test/java/io/appium/java_client/android/SettingTest.java index 0cd0ac6f5..559c1ba69 100644 --- a/src/test/java/io/appium/java_client/android/SettingTest.java +++ b/src/test/java/io/appium/java_client/android/SettingTest.java @@ -92,6 +92,17 @@ public class SettingTest extends BaseAndroidTest { .get(Setting.TRACK_SCROLL_EVENTS.toString())); } + @Test public void testSettingByString() { + assertEquals(true, driver.getSettings() + .get("shouldUseCompactResponses")); + driver.setSetting("shouldUseCompactResponses", false); + assertEquals(false, driver.getSettings() + .get("shouldUseCompactResponses")); + driver.setSetting("shouldUseCompactResponses", true); + assertEquals(true, driver.getSettings() + .get("shouldUseCompactResponses")); + } + private void assertJSONElementContains(Setting setting, long value) { assertEquals(driver.getSettings().get(setting.toString()), value); } diff --git a/src/test/java/io/appium/java_client/ios/SettingTest.java b/src/test/java/io/appium/java_client/ios/SettingTest.java index b6d576585..d48d2c64d 100644 --- a/src/test/java/io/appium/java_client/ios/SettingTest.java +++ b/src/test/java/io/appium/java_client/ios/SettingTest.java @@ -83,5 +83,16 @@ public class SettingTest extends AppIOSTest { .get(Setting.KEYBOARD_PREDICTION.toString())); } + @Test public void testSettingByString() { + assertEquals(true, driver.getSettings() + .get("shouldUseCompactResponses")); + driver.setSetting("shouldUseCompactResponses", false); + assertEquals(false, driver.getSettings() + .get("shouldUseCompactResponses")); + driver.setSetting("shouldUseCompactResponses", true); + assertEquals(true, driver.getSettings() + .get("shouldUseCompactResponses")); + } + }