Skip to content

Commit 0124594

Browse files
appium click deprecated update
1 parent b061a71 commit 0124594

File tree

1 file changed

+25
-3
lines changed

1 file changed

+25
-3
lines changed

source/src/main/java/org/cerberus/core/service/appium/impl/AppiumService.java

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,16 @@
4444
import org.cerberus.core.util.StringUtil;
4545
import org.json.JSONException;
4646
import org.openqa.selenium.*;
47+
import org.openqa.selenium.interactions.PointerInput;
48+
import org.openqa.selenium.interactions.Sequence;
4749
import org.openqa.selenium.support.ui.ExpectedConditions;
4850
import org.openqa.selenium.support.ui.WebDriverWait;
4951
import org.springframework.beans.factory.annotation.Autowired;
5052

5153
import java.awt.geom.Line2D;
5254
import java.time.Duration;
55+
import java.util.Arrays;
56+
import java.util.List;
5357
import java.util.Set;
5458
import java.util.concurrent.TimeUnit;
5559
import java.util.regex.Matcher;
@@ -193,22 +197,40 @@ public MessageEvent type(Session session, Identifier identifier, String valueToT
193197
public MessageEvent click(final Session session, final Identifier identifier, Integer hOffset, Integer vOffset) {
194198
try {
195199
MessageEvent foundElementMsg;
196-
final TouchAction action = new TouchAction((PerformsTouchActions)session.getAppiumDriver());
200+
AppiumDriver appiumDriver = session.getAppiumDriver();
201+
202+
final PointerInput finger = new PointerInput(PointerInput.Kind.TOUCH, "finger");
197203

198204
if (identifier.isSameIdentifier(Identifier.Identifiers.COORDINATE)) {
199205
final Coordinates coordinates = getCoordinates(identifier);
200206
Point offset = new Point(coordinates.getX(), coordinates.getY());
201207
foundElementMsg = new MessageEvent(MessageEventEnum.ACTION_SUCCESS_FOUND_ELEMENT);
202208
foundElementMsg.resolveDescription("NUMBER", "1");
203209
foundElementMsg.resolveDescription("ELEMENT", identifier.toString());
204-
action.tap(PointOption.point(offset)).perform();
210+
211+
Sequence tapSequence = new Sequence(finger, 0);
212+
tapSequence.addAction(finger.createPointerMove(
213+
Duration.ofMillis(0), PointerInput.Origin.viewport(), offset.getX(), offset.getY()));
214+
tapSequence.addAction(finger.createPointerDown(PointerInput.MouseButton.LEFT.asArg()));
215+
tapSequence.addAction(finger.createPointerUp(PointerInput.MouseButton.LEFT.asArg()));
216+
appiumDriver.perform(List.of(tapSequence));
205217
} else {
206218
WebElement element = getElement(session, identifier, false, false);
207219
Integer numberOfElement = this.getNumberOfElements(session, identifier);
208220
foundElementMsg = new MessageEvent(MessageEventEnum.ACTION_SUCCESS_FOUND_ELEMENT);
209221
foundElementMsg.resolveDescription("NUMBER", numberOfElement.toString());
210222
foundElementMsg.resolveDescription("ELEMENT", identifier.toString());
211-
action.tap(ElementOption.element(element, hOffset, vOffset)).perform();
223+
224+
Rectangle rect = element.getRect();
225+
int elementX = rect.getX() + (hOffset != null ? hOffset : rect.getWidth() / 2);
226+
int elementY = rect.getY() + (vOffset != null ? vOffset : rect.getHeight() / 2);
227+
228+
Sequence tapSequence = new Sequence(finger, 0);
229+
tapSequence.addAction(finger.createPointerMove(
230+
Duration.ofMillis(0), PointerInput.Origin.viewport(), elementX, elementY));
231+
tapSequence.addAction(finger.createPointerDown(PointerInput.MouseButton.LEFT.asArg()));
232+
tapSequence.addAction(finger.createPointerUp(PointerInput.MouseButton.LEFT.asArg()));
233+
appiumDriver.perform(List.of(tapSequence));
212234
}
213235
return new MessageEvent(MessageEventEnum.ACTION_SUCCESS_CLICK).resolveDescription("ELEMENT", identifier.toString()).resolveDescription("ELEMENTFOUND", foundElementMsg.getDescription());
214236
} catch (NoSuchElementException e) {

0 commit comments

Comments
 (0)