From 2e4f81391522d1f7569150b71dd2f3ba682f6a21 Mon Sep 17 00:00:00 2001 From: Andrei Solntsev Date: Wed, 13 May 2020 22:37:20 +0300 Subject: [PATCH 1/2] refactor: avoid casting to RemoteWebElement * instead, cast to interface HasIdentity (because it's a weaker type). * this commit is similar to https://github.com/appium/java-client/pull/432/files Some background: as a developer of framework which uses proxies for WebElement (Selenide), I cannot create proxy for RemoteWebElement since it's an abstract class, not interface. --- .../io/appium/java_client/touch/offset/ElementOption.java | 6 +++--- .../java/io/appium/java_client/touch/TouchOptionsTests.java | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/appium/java_client/touch/offset/ElementOption.java b/src/main/java/io/appium/java_client/touch/offset/ElementOption.java index 8cf1c8c6a..aeee13c4a 100644 --- a/src/main/java/io/appium/java_client/touch/offset/ElementOption.java +++ b/src/main/java/io/appium/java_client/touch/offset/ElementOption.java @@ -6,7 +6,7 @@ import org.openqa.selenium.Point; import org.openqa.selenium.WebElement; -import org.openqa.selenium.remote.RemoteWebElement; +import org.openqa.selenium.internal.HasIdentity; import java.util.HashMap; import java.util.Map; @@ -85,8 +85,8 @@ public ElementOption withElement(WebElement element) { checkNotNull(element); checkArgument(true, "Element should be an instance of the class which " + "extends org.openqa.selenium.remote.RemoteWebElement", - (RemoteWebElement.class.isAssignableFrom(element.getClass()))); - elementId = RemoteWebElement.class.cast(element).getId(); + (HasIdentity.class.isAssignableFrom(element.getClass()))); + elementId = HasIdentity.class.cast(element).getId(); return this; } diff --git a/src/test/java/io/appium/java_client/touch/TouchOptionsTests.java b/src/test/java/io/appium/java_client/touch/TouchOptionsTests.java index 72ef8441f..4476ed33e 100644 --- a/src/test/java/io/appium/java_client/touch/TouchOptionsTests.java +++ b/src/test/java/io/appium/java_client/touch/TouchOptionsTests.java @@ -27,7 +27,7 @@ import java.util.Map; public class TouchOptionsTests { - private static final WebElement DUMMY_ELEMENT = new DummyElement(); + private static final RemoteWebElement DUMMY_ELEMENT = new DummyElement(); @Test(expected = IllegalArgumentException.class) public void invalidEmptyPointOptionsShouldFailOnBuild() { @@ -62,7 +62,7 @@ public void longPressOptionsShouldBuildProperly() { .withDuration(ofMillis(1)) .build(); final Map expectedOpts = new HashMap<>(); - expectedOpts.put("element", ((RemoteWebElement) DUMMY_ELEMENT).getId()); + expectedOpts.put("element", DUMMY_ELEMENT.getId()); expectedOpts.put("x", 0); expectedOpts.put("y", 0); expectedOpts.put("duration", 1L); From 9cb2db4c3bca7adae05a98eae2cc2863791ae551 Mon Sep 17 00:00:00 2001 From: Andrei Solntsev Date: Wed, 13 May 2020 23:29:36 +0300 Subject: [PATCH 2/2] fixup after code review --- .../io/appium/java_client/touch/offset/ElementOption.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/appium/java_client/touch/offset/ElementOption.java b/src/main/java/io/appium/java_client/touch/offset/ElementOption.java index aeee13c4a..ede90103c 100644 --- a/src/main/java/io/appium/java_client/touch/offset/ElementOption.java +++ b/src/main/java/io/appium/java_client/touch/offset/ElementOption.java @@ -84,9 +84,9 @@ public ElementOption withCoordinates(int xOffset, int yOffset) { public ElementOption withElement(WebElement element) { checkNotNull(element); checkArgument(true, "Element should be an instance of the class which " - + "extends org.openqa.selenium.remote.RemoteWebElement", - (HasIdentity.class.isAssignableFrom(element.getClass()))); - elementId = HasIdentity.class.cast(element).getId(); + + "implements org.openqa.selenium.internal.HasIdentity", + element instanceof HasIdentity); + elementId = ((HasIdentity) element).getId(); return this; }