From 7460fc8e96aaeec16ee3727a694295580491e0a0 Mon Sep 17 00:00:00 2001 From: Godet Alexandre Date: Mon, 21 Jul 2014 12:18:51 +0200 Subject: [PATCH] add geo location support --- .../java/io/appium/java_client/AppiumDriver.java | 16 ++++++++++++++++ .../io/appium/java_client/MobileCommand.java | 1 + .../java_client/MobileDriverAndroidTest.java | 5 +++++ 3 files changed, 22 insertions(+) diff --git a/src/main/java/io/appium/java_client/AppiumDriver.java b/src/main/java/io/appium/java_client/AppiumDriver.java index 01ef3a148..9ded7c0ab 100644 --- a/src/main/java/io/appium/java_client/AppiumDriver.java +++ b/src/main/java/io/appium/java_client/AppiumDriver.java @@ -73,6 +73,7 @@ public AppiumDriver(URL remoteAddress, Capabilities desiredCapabilities){ .put(OPEN_NOTIFICATIONS, postC("/session/:sessionId/appium/device/open_notifications")) .put(GET_NETWORK_CONNECTION, getC("/session/:sessionId/network_connection")) .put(SET_NETWORK_CONNECTION, postC("/session/:sessionId/network_connection")) + .put(SET_LOCATION, postC("/session/:sessionId/location")) ; ImmutableMap mobileCommands = builder.build(); @@ -547,6 +548,21 @@ public void setNetworkConnection(NetworkConnectionSetting connection) { execute(SET_NETWORK_CONNECTION, builder.build()); } + /** + * + * Set the geo location of the device + * This work for android and ios devices + * + * @param latitude + * @param longitude + * @param altitude + */ + public void setLocation(double latitude, double longitude, double altitude) { + ImmutableMap.Builder builder = ImmutableMap.builder(); + builder.put("latitude", latitude).put("longitude", longitude).put("altitude", altitude); + execute(SET_LOCATION, builder.build()); + } + @Override public WebDriver context(String name) { if (name == null) { diff --git a/src/main/java/io/appium/java_client/MobileCommand.java b/src/main/java/io/appium/java_client/MobileCommand.java index b94741c02..3c0a8478e 100644 --- a/src/main/java/io/appium/java_client/MobileCommand.java +++ b/src/main/java/io/appium/java_client/MobileCommand.java @@ -48,5 +48,6 @@ public interface MobileCommand { String OPEN_NOTIFICATIONS = "openNotifications"; String GET_NETWORK_CONNECTION = "getNetworkConnection"; String SET_NETWORK_CONNECTION = "setNetworkConnection"; + String SET_LOCATION = "setLocation"; } diff --git a/src/test/java/io/appium/java_client/MobileDriverAndroidTest.java b/src/test/java/io/appium/java_client/MobileDriverAndroidTest.java index 5eb9f6a86..b1d80791f 100644 --- a/src/test/java/io/appium/java_client/MobileDriverAndroidTest.java +++ b/src/test/java/io/appium/java_client/MobileDriverAndroidTest.java @@ -122,4 +122,9 @@ public void networkConnectionTest() { assertEquals(new NetworkConnectionSetting(false, false, false), networkConnection); } + + @Test + public void locationTest() { + driver.setLocation(48.8667,2.4833,0); + } }