44
44
import org .cerberus .core .util .StringUtil ;
45
45
import org .json .JSONException ;
46
46
import org .openqa .selenium .*;
47
+ import org .openqa .selenium .interactions .Pause ;
47
48
import org .openqa .selenium .interactions .PointerInput ;
48
49
import org .openqa .selenium .interactions .Sequence ;
49
50
import org .openqa .selenium .support .ui .ExpectedConditions ;
@@ -193,7 +194,7 @@ public MessageEvent type(Session session, Identifier identifier, String valueToT
193
194
}
194
195
}
195
196
196
- @ Override
197
+ @ Override //#FIXME SELENIUM #TEST (respect w3c)
197
198
public MessageEvent click (final Session session , final Identifier identifier , Integer hOffset , Integer vOffset ) {
198
199
try {
199
200
MessageEvent foundElementMsg ;
@@ -514,13 +515,29 @@ public String getElementPosition(Session session, Identifier identifier) {
514
515
@ Override
515
516
public MessageEvent longPress (final Session session , final Identifier identifier , final Integer timeDuration ) {
516
517
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
+
518
523
if (identifier .isSameIdentifier (Identifier .Identifiers .COORDINATE )) {
519
524
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 ();
521
527
} 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 ;
523
532
}
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
+
524
541
return new MessageEvent (MessageEventEnum .ACTION_SUCCESS_LONG_CLICK ).resolveDescription ("ELEMENT" , identifier .toString ());
525
542
} catch (NoSuchElementException e ) {
526
543
if (LOG .isDebugEnabled ()) {
@@ -531,7 +548,6 @@ public MessageEvent longPress(final Session session, final Identifier identifier
531
548
LOG .warn (e .getMessage ());
532
549
return parseWebDriverException (e );
533
550
}
534
-
535
551
}
536
552
537
553
@ Override
0 commit comments