From e0217664c4e8f1998949c7cfa09c3d9aa63c3a41 Mon Sep 17 00:00:00 2001 From: Sergey Tikhomirov Date: Sun, 15 Mar 2015 00:08:55 +0300 Subject: [PATCH] #162 fix --- .../io/appium/java_client/AppiumDriver.java | 42 +++++++++++++++++-- .../java_client/FindsByAccessibilityId.java | 2 +- .../FindsByAndroidUIAutomator.java | 5 ++- .../java_client/FindsByIosUIAutomation.java | 5 ++- .../io/appium/java_client/MobileElement.java | 40 ++++++++++++++++-- .../java_client/android/AndroidDriver.java | 4 +- .../java_client/android/AndroidElement.java | 4 +- .../java_client/ios/GetsNamedTextField.java | 2 +- .../io/appium/java_client/ios/IOSDriver.java | 10 ++--- .../io/appium/java_client/ios/IOSElement.java | 4 +- .../android/AndroidAccessibilityTest.java | 4 +- .../android/AndroidGestureTest.java | 16 +++---- .../appium/java_client/ios/IOSDriverTest.java | 12 +++--- 13 files changed, 111 insertions(+), 39 deletions(-) diff --git a/src/main/java/io/appium/java_client/AppiumDriver.java b/src/main/java/io/appium/java_client/AppiumDriver.java index cf69e3022..10ff30074 100644 --- a/src/main/java/io/appium/java_client/AppiumDriver.java +++ b/src/main/java/io/appium/java_client/AppiumDriver.java @@ -71,7 +71,43 @@ protected static Capabilities substituteMobilePlatform( return dc; } - /** + public MobileElement findElement(By by){ + return (MobileElement) super.findElement(by); + } + + public MobileElement findElementById(String using){ + return (MobileElement) super.findElementById(using); + } + + public MobileElement findElementByClassName(String using){ + return (MobileElement) super.findElementByClassName(using); + } + + public MobileElement findElementByName(String using){ + return (MobileElement) super.findElementByName(using); + } + + public MobileElement findElementByTagName(String using){ + return (MobileElement) super.findElementByTagName(using); + } + + public MobileElement findElementByCssSelector(String using){ + return (MobileElement) super.findElementByCssSelector(using); +} + + public MobileElement findElementByLinkText(String using){ + return (MobileElement) super.findElementByLinkText(using); + } + + public MobileElement findElementByPartialLinkText(String using){ + return (MobileElement) super.findElementByPartialLinkText(using); + } + + public MobileElement findElementByXPath(String using){ + return (MobileElement) super.findElementByXPath(using); + } + + /** * @param param * is a parameter name * @param value @@ -572,8 +608,8 @@ public ScreenOrientation getOrientation() { } @Override - public WebElement findElementByAccessibilityId(String using) { - return findElement("accessibility id", using); + public MobileElement findElementByAccessibilityId(String using) { + return (MobileElement) findElement("accessibility id", using); } @Override diff --git a/src/main/java/io/appium/java_client/FindsByAccessibilityId.java b/src/main/java/io/appium/java_client/FindsByAccessibilityId.java index 5ee5600d2..bd29d5f40 100644 --- a/src/main/java/io/appium/java_client/FindsByAccessibilityId.java +++ b/src/main/java/io/appium/java_client/FindsByAccessibilityId.java @@ -21,7 +21,7 @@ import java.util.List; public interface FindsByAccessibilityId { - WebElement findElementByAccessibilityId(String using); + T findElementByAccessibilityId(String using); List findElementsByAccessibilityId(String using); } \ No newline at end of file diff --git a/src/main/java/io/appium/java_client/FindsByAndroidUIAutomator.java b/src/main/java/io/appium/java_client/FindsByAndroidUIAutomator.java index a91c9c34d..11e913e2b 100644 --- a/src/main/java/io/appium/java_client/FindsByAndroidUIAutomator.java +++ b/src/main/java/io/appium/java_client/FindsByAndroidUIAutomator.java @@ -21,7 +21,8 @@ import java.util.List; public interface FindsByAndroidUIAutomator { - WebElement findElementByAndroidUIAutomator(String using); - List findElementsByAndroidUIAutomator(String using); + T findElementByAndroidUIAutomator(String using); + + List findElementsByAndroidUIAutomator(String using); } \ No newline at end of file diff --git a/src/main/java/io/appium/java_client/FindsByIosUIAutomation.java b/src/main/java/io/appium/java_client/FindsByIosUIAutomation.java index a5a94bd8c..2394f8425 100644 --- a/src/main/java/io/appium/java_client/FindsByIosUIAutomation.java +++ b/src/main/java/io/appium/java_client/FindsByIosUIAutomation.java @@ -21,7 +21,8 @@ import java.util.List; public interface FindsByIosUIAutomation { - WebElement findElementByIosUIAutomation(String using); - List findElementsByIosUIAutomation(String using); + T findElementByIosUIAutomation(String using); + + List findElementsByIosUIAutomation(String using); } \ No newline at end of file diff --git a/src/main/java/io/appium/java_client/MobileElement.java b/src/main/java/io/appium/java_client/MobileElement.java index 02f18722e..196a50158 100644 --- a/src/main/java/io/appium/java_client/MobileElement.java +++ b/src/main/java/io/appium/java_client/MobileElement.java @@ -34,10 +34,6 @@ public List findElements(By by) { return by.findElements(this); } - public WebElement findElement(By by) { - return by.findElement(this); - } - public WebElement findElementByAccessibilityId(String using) { return findElement("accessibility id", using); } @@ -79,4 +75,40 @@ public void swipe(SwipeElementDirection direction, int offsetFromStartBorder, direction.swipe((AppiumDriver) parent, this, offsetFromStartBorder, offsetFromEndBorder, duration); } + + public MobileElement findElement(By by){ + return (MobileElement) super.findElements(by); + } + + public MobileElement findElementById(String using){ + return (MobileElement) super.findElementById(using); + } + + public MobileElement findElementByClassName(String using){ + return (MobileElement) super.findElementByClassName(using); + } + + public MobileElement findElementByName(String using){ + return (MobileElement) super.findElementByName(using); + } + + public MobileElement findElementByTagName(String using){ + return (MobileElement) super.findElementByTagName(using); + } + + public MobileElement findElementByCssSelector(String using){ + return (MobileElement) super.findElementByCssSelector(using); + } + + public MobileElement findElementByLinkText(String using){ + return (MobileElement) super.findElementByLinkText(using); + } + + public MobileElement findElementByPartialLinkText(String using){ + return (MobileElement) super.findElementByPartialLinkText(using); + } + + public MobileElement findElementByXPath(String using){ + return (MobileElement) super.findElementByXPath(using); + } } diff --git a/src/main/java/io/appium/java_client/android/AndroidDriver.java b/src/main/java/io/appium/java_client/android/AndroidDriver.java index da3ca7a9f..c660f12a0 100644 --- a/src/main/java/io/appium/java_client/android/AndroidDriver.java +++ b/src/main/java/io/appium/java_client/android/AndroidDriver.java @@ -251,8 +251,8 @@ public void ignoreUnimportantViews(Boolean compress) { } @Override - public WebElement findElementByAndroidUIAutomator(String using) { - return findElement("-android uiautomator", using); + public AndroidElement findElementByAndroidUIAutomator(String using) { + return (AndroidElement) findElement("-android uiautomator", using); } @Override diff --git a/src/main/java/io/appium/java_client/android/AndroidElement.java b/src/main/java/io/appium/java_client/android/AndroidElement.java index cb71e1014..1fea1bce6 100644 --- a/src/main/java/io/appium/java_client/android/AndroidElement.java +++ b/src/main/java/io/appium/java_client/android/AndroidElement.java @@ -11,8 +11,8 @@ public class AndroidElement extends MobileElement implements FindsByAndroidUIAutomator { @Override - public WebElement findElementByAndroidUIAutomator(String using) { - return findElement("-android uiautomator", using); + public AndroidElement findElementByAndroidUIAutomator(String using) { + return (AndroidElement) findElement("-android uiautomator", using); } @Override diff --git a/src/main/java/io/appium/java_client/ios/GetsNamedTextField.java b/src/main/java/io/appium/java_client/ios/GetsNamedTextField.java index 6898c769c..136bb4950 100644 --- a/src/main/java/io/appium/java_client/ios/GetsNamedTextField.java +++ b/src/main/java/io/appium/java_client/ios/GetsNamedTextField.java @@ -12,6 +12,6 @@ public interface GetsNamedTextField { * accessiblity id of TextField * @return The textfield with the given accessibility id */ - public WebElement getNamedTextField(String name); + public T getNamedTextField(String name); } diff --git a/src/main/java/io/appium/java_client/ios/IOSDriver.java b/src/main/java/io/appium/java_client/ios/IOSDriver.java index 2950b2774..d417e34f4 100644 --- a/src/main/java/io/appium/java_client/ios/IOSDriver.java +++ b/src/main/java/io/appium/java_client/ios/IOSDriver.java @@ -75,17 +75,17 @@ public void shake() { * @see GetsNamedTextField#getNamedTextField(String) */ @Override - public WebElement getNamedTextField(String name) { - MobileElement element = (MobileElement) findElementByAccessibilityId(name); + public IOSElement getNamedTextField(String name) { + IOSElement element = (IOSElement) findElementByAccessibilityId(name); if (element.getTagName() != "TextField") { - return element.findElementByAccessibilityId(name); + return (IOSElement) element.findElementByAccessibilityId(name); } return element; } @Override - public WebElement findElementByIosUIAutomation(String using) { - return findElement("-ios uiautomation", using); + public IOSElement findElementByIosUIAutomation(String using) { + return (IOSElement) findElement("-ios uiautomation", using); } @Override diff --git a/src/main/java/io/appium/java_client/ios/IOSElement.java b/src/main/java/io/appium/java_client/ios/IOSElement.java index 66d84f9e8..d99f984d5 100644 --- a/src/main/java/io/appium/java_client/ios/IOSElement.java +++ b/src/main/java/io/appium/java_client/ios/IOSElement.java @@ -14,8 +14,8 @@ public class IOSElement extends MobileElement implements FindsByIosUIAutomation, ScrollsTo { @Override - public WebElement findElementByIosUIAutomation(String using) { - return findElement("-ios uiautomation", using); + public IOSElement findElementByIosUIAutomation(String using) { + return (IOSElement) findElement("-ios uiautomation", using); } @Override diff --git a/src/test/java/io/appium/java_client/android/AndroidAccessibilityTest.java b/src/test/java/io/appium/java_client/android/AndroidAccessibilityTest.java index a23fb18d1..01ed4d73a 100644 --- a/src/test/java/io/appium/java_client/android/AndroidAccessibilityTest.java +++ b/src/test/java/io/appium/java_client/android/AndroidAccessibilityTest.java @@ -4,6 +4,7 @@ import static org.junit.Assert.assertTrue; import io.appium.java_client.AppiumDriver; import io.appium.java_client.MobileBy; +import io.appium.java_client.MobileElement; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.remote.MobileCapabilityType; @@ -44,7 +45,8 @@ public void findElementsTest() { @Test public void findElementTest() { - WebElement element = driver.findElementByAccessibilityId("Accessibility"); + //WebElement element = + MobileElement element = driver.findElementByAccessibilityId("Accessibility"); assertNotNull(element); } diff --git a/src/test/java/io/appium/java_client/android/AndroidGestureTest.java b/src/test/java/io/appium/java_client/android/AndroidGestureTest.java index 12cd0f341..b7a090351 100644 --- a/src/test/java/io/appium/java_client/android/AndroidGestureTest.java +++ b/src/test/java/io/appium/java_client/android/AndroidGestureTest.java @@ -96,37 +96,37 @@ public void TapSingleFingerTest() throws InterruptedException { @Test public void elementGestureTest(){ driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS); - MobileElement e = (MobileElement) driver.findElement(MobileBy.AccessibilityId("App")); + MobileElement e = driver.findElement(MobileBy.AccessibilityId("App")); e.tap(1, 1500); System.out.println("tap"); - MobileElement e2 = (MobileElement) driver.findElementByClassName("android.widget.TextView"); + MobileElement e2 = driver.findElementByClassName("android.widget.TextView"); e2.zoom(); System.out.println("zoom"); e2.swipe(SwipeElementDirection.RIGHT,1000); System.out.println("RIGHT"); - e2 = (MobileElement) driver.findElementByClassName("android.widget.TextView"); + e2 = driver.findElementByClassName("android.widget.TextView"); e2.swipe(SwipeElementDirection.RIGHT, 10, 20, 1000); System.out.println("RIGHT Left border + 10 Right border - 20"); - e2 = (MobileElement) driver.findElementByClassName("android.widget.TextView"); + e2 = driver.findElementByClassName("android.widget.TextView"); e2.swipe(SwipeElementDirection.LEFT, 1000); System.out.println("LEFT"); - e2 = (MobileElement) driver.findElementByClassName("android.widget.TextView"); + e2 = driver.findElementByClassName("android.widget.TextView"); e2.swipe(SwipeElementDirection.LEFT, 10, 20, 1000); System.out.println("LEFT Right border - 10 Left border + 20"); driver.sendKeyEvent(AndroidKeyCode.BACK); - e2 = (MobileElement) driver.findElementByClassName("android.widget.TextView"); + e2 = driver.findElementByClassName("android.widget.TextView"); e2.swipe(SwipeElementDirection.DOWN,1000); System.out.println("DOWN"); - e2 = (MobileElement) driver.findElementByClassName("android.widget.TextView"); + e2 = driver.findElementByClassName("android.widget.TextView"); e2.swipe(SwipeElementDirection.DOWN, 10, 20, 1000); System.out.println("DOWN Top - 10 Bottom + 20"); - e2 = (MobileElement) driver.findElementByClassName("android.widget.TextView"); + e2 = driver.findElementByClassName("android.widget.TextView"); e2.swipe(SwipeElementDirection.UP,1000); System.out.println("UP"); diff --git a/src/test/java/io/appium/java_client/ios/IOSDriverTest.java b/src/test/java/io/appium/java_client/ios/IOSDriverTest.java index 654d28c61..e7c7eb397 100644 --- a/src/test/java/io/appium/java_client/ios/IOSDriverTest.java +++ b/src/test/java/io/appium/java_client/ios/IOSDriverTest.java @@ -80,25 +80,25 @@ public void resetTest() { @Test public void namedTextFieldTest() { - MobileElement element = (MobileElement)driver.findElementByAccessibilityId("Text Fields, AAPLTextFieldViewController"); + MobileElement element = driver.findElementByAccessibilityId("Text Fields, AAPLTextFieldViewController"); element.click(); - element = (MobileElement)driver.getNamedTextField("DEFAULT"); + element = driver.getNamedTextField("DEFAULT"); ((IOSElement) element).setValue("Grace Hopper"); assertEquals("Grace Hopper", element.getText()); } @Test public void hideKeyboardWithParametersTest() { - MobileElement element = (MobileElement)driver.findElementByAccessibilityId("Text Fields, AAPLTextFieldViewController"); + MobileElement element = driver.findElementByAccessibilityId("Text Fields, AAPLTextFieldViewController"); element.click(); - element = (MobileElement)driver.findElementByAccessibilityId("DEFAULT"); + element = driver.findElementByAccessibilityId("DEFAULT"); element.click(); driver.hideKeyboard(HideKeyboardStrategy.PRESS_KEY, "Done"); } @Test public void scrollToTest() { - MobileElement searchBar = (MobileElement) driver.findElementByName("Search Bars"); + MobileElement searchBar = driver.findElementByName("Search Bars"); Point before = searchBar.getLocation(); driver.scrollTo("Search Ba"); Point after = searchBar.getLocation(); @@ -107,7 +107,7 @@ public void scrollToTest() { @Test public void scrollToExactTest() { - MobileElement searchBar = (MobileElement) driver.findElementByName("Search Bars"); + MobileElement searchBar = driver.findElementByName("Search Bars"); Point before = searchBar.getLocation(); driver.scrollToExact("Search Bars"); Point after = searchBar.getLocation();