From 8d7bfa2e391ea168df3e212a2a6785c38ef25f0e Mon Sep 17 00:00:00 2001 From: jonahss Date: Mon, 5 May 2014 16:57:10 -0700 Subject: [PATCH] AppiumDriver now implementes Rotatable. Fixes #14 --- .../io/appium/java_client/AppiumDriver.java | 21 ++++++++++++++++++- .../java_client/MobileDriverIOSTest.java | 8 +++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/appium/java_client/AppiumDriver.java b/src/main/java/io/appium/java_client/AppiumDriver.java index 4c6453d4b..7387fe1ac 100644 --- a/src/main/java/io/appium/java_client/AppiumDriver.java +++ b/src/main/java/io/appium/java_client/AppiumDriver.java @@ -31,7 +31,7 @@ import static io.appium.java_client.MobileCommand.*; -public class AppiumDriver extends RemoteWebDriver implements MobileDriver, ContextAware, FindsByIosUIAutomation, +public class AppiumDriver extends RemoteWebDriver implements MobileDriver, ContextAware, Rotatable, FindsByIosUIAutomation, FindsByAndroidUIAutomator, FindsByAccessibilityId { private final static MobileErrorHandler errorHandler = new MobileErrorHandler(); @@ -487,6 +487,24 @@ public String getContext() { return contextName; } + @Override + public void rotate(ScreenOrientation orientation) { + execute(DriverCommand.SET_SCREEN_ORIENTATION, ImmutableMap.of("orientation", orientation.value().toUpperCase())); + } + + @Override + public ScreenOrientation getOrientation() { + Response response = execute(DriverCommand.GET_SCREEN_ORIENTATION); + String orientation = response.getValue().toString().toLowerCase(); + if (orientation.equals(ScreenOrientation.LANDSCAPE.value())) { + return ScreenOrientation.LANDSCAPE; + } else if (orientation.equals(ScreenOrientation.PORTRAIT.value())) { + return ScreenOrientation.PORTRAIT; + } else { + throw new WebDriverException("Unexpected orientation returned: " + orientation); + } + } + @Override public WebElement findElementByIosUIAutomation(String using) { return findElement("-ios uiautomation", using); @@ -538,4 +556,5 @@ private static CommandInfo postC(String url) { private static CommandInfo deleteC(String url) { return new CommandInfo(url, HttpVerb.DELETE); } + } \ No newline at end of file diff --git a/src/test/java/io/appium/java_client/MobileDriverIOSTest.java b/src/test/java/io/appium/java_client/MobileDriverIOSTest.java index 625e4a3ae..22711b36a 100644 --- a/src/test/java/io/appium/java_client/MobileDriverIOSTest.java +++ b/src/test/java/io/appium/java_client/MobileDriverIOSTest.java @@ -21,6 +21,7 @@ import org.junit.Before; import org.junit.Test; import static org.junit.Assert.*; +import org.openqa.selenium.ScreenOrientation; import org.openqa.selenium.remote.CapabilityType; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebElement; @@ -105,4 +106,11 @@ public void lockTest() { driver.lockScreen(3); } + @Test + public void orientationTest() { + assertEquals(ScreenOrientation.PORTRAIT, driver.getOrientation()); + driver.rotate(ScreenOrientation.LANDSCAPE); + assertEquals(ScreenOrientation.LANDSCAPE, driver.getOrientation()); + } + }