Skip to content

Commit 19f25be

Browse files
appium longpress deprecated update
1 parent 0124594 commit 19f25be

File tree

1 file changed

+21
-5
lines changed

1 file changed

+21
-5
lines changed

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

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import org.cerberus.core.util.StringUtil;
4545
import org.json.JSONException;
4646
import org.openqa.selenium.*;
47+
import org.openqa.selenium.interactions.Pause;
4748
import org.openqa.selenium.interactions.PointerInput;
4849
import org.openqa.selenium.interactions.Sequence;
4950
import org.openqa.selenium.support.ui.ExpectedConditions;
@@ -193,7 +194,7 @@ public MessageEvent type(Session session, Identifier identifier, String valueToT
193194
}
194195
}
195196

196-
@Override
197+
@Override //#FIXME SELENIUM #TEST (respect w3c)
197198
public MessageEvent click(final Session session, final Identifier identifier, Integer hOffset, Integer vOffset) {
198199
try {
199200
MessageEvent foundElementMsg;
@@ -514,13 +515,29 @@ public String getElementPosition(Session session, Identifier identifier) {
514515
@Override
515516
public MessageEvent longPress(final Session session, final Identifier identifier, final Integer timeDuration) {
516517
try {
517-
final TouchAction action = new TouchAction((PerformsTouchActions) session.getAppiumDriver());//#FIXME SELENIUM #TEST (was cast to PerformsTouchActions)
518+
PointerInput finger = new PointerInput(PointerInput.Kind.TOUCH, "finger");
519+
Sequence longPressSequence = new Sequence(finger, 0);
520+
int elementX;
521+
int elementY;
522+
518523
if (identifier.isSameIdentifier(Identifier.Identifiers.COORDINATE)) {
519524
final Coordinates coordinates = getCoordinates(identifier);
520-
action.press(PointOption.point(coordinates.getX(), coordinates.getY())).waitAction(WaitOptions.waitOptions(Duration.ofMillis(timeDuration))).release().perform();
525+
elementX = coordinates.getX();
526+
elementY = coordinates.getY();
521527
} else {
522-
action.press(ElementOption.element(getElement(session, identifier, false, false))).waitAction(WaitOptions.waitOptions(Duration.ofMillis(timeDuration))).release().perform();
528+
WebElement element = getElement(session, identifier, false, false);
529+
Rectangle rect = element.getRect();
530+
elementX = rect.getX() + rect.getWidth() / 2;
531+
elementY = rect.getY() + rect.getHeight() / 2;
523532
}
533+
534+
longPressSequence.addAction(finger.createPointerMove(Duration.ofMillis(0), PointerInput.Origin.viewport(), elementX, elementY));
535+
longPressSequence.addAction(finger.createPointerDown(PointerInput.MouseButton.LEFT.asArg()));
536+
longPressSequence.addAction(new Pause(finger, Duration.ofMillis(timeDuration)));
537+
longPressSequence.addAction(finger.createPointerUp(PointerInput.MouseButton.LEFT.asArg()));
538+
539+
session.getAppiumDriver().perform(List.of(longPressSequence));
540+
524541
return new MessageEvent(MessageEventEnum.ACTION_SUCCESS_LONG_CLICK).resolveDescription("ELEMENT", identifier.toString());
525542
} catch (NoSuchElementException e) {
526543
if (LOG.isDebugEnabled()) {
@@ -531,7 +548,6 @@ public MessageEvent longPress(final Session session, final Identifier identifier
531548
LOG.warn(e.getMessage());
532549
return parseWebDriverException(e);
533550
}
534-
535551
}
536552

537553
@Override

0 commit comments

Comments
 (0)