protected List<Interaction> moveToLocation(PointerInput mouse) { List<Interaction> interactions = new ArrayList<>(); Optional<WebElement> target = getTargetElement(); interactions.add(mouse.createPointerMove( Duration.ofMillis(500), target.map(Origin::fromElement).orElse(Origin.pointer()), 0, 0)); return Collections.unmodifiableList(interactions); } }
@Override public List<Interaction> asInteractions(PointerInput mouse, KeyInput keyboard) { Optional<WebElement> target = getTargetElement(); List<Interaction> interactions = new ArrayList<>(); interactions.add(mouse.createPointerMove( Duration.ofMillis(500), target.map(Origin::fromElement).orElse(Origin.pointer()), xOffset, yOffset)); return Collections.unmodifiableList(interactions); } }
private Actions moveInTicks(WebElement target, int xOffset, int yOffset) { return tick(defaultMouse.createPointerMove( Duration.ofMillis(100), Origin.fromElement(target), xOffset, yOffset)); }
protected Collection<Interaction> optionallyClickElement(PointerInput mouse) { List<Interaction> interactions = new ArrayList<>(); Optional<WebElement> target = getTargetElement(); if (target.isPresent()) { interactions.add(mouse.createPointerMove( Duration.ofMillis(500), target.map(Origin::fromElement).orElse(Origin.pointer()), 0, 0)); interactions.add(mouse.createPointerDown(MouseButton.LEFT.asArg())); interactions.add(mouse.createPointerUp(MouseButton.LEFT.asArg())); } return Collections.unmodifiableList(interactions); } }
/** * Moves the mouse from its current position (or 0,0) by the given offset. If the coordinates * provided are outside the viewport (the mouse will end up outside the browser window) then * the viewport is scrolled to match. * @param xOffset horizontal offset. A negative value means moving the mouse left. * @param yOffset vertical offset. A negative value means moving the mouse up. * @return A self reference. * @throws MoveTargetOutOfBoundsException if the provided offset is outside the document's * boundaries. */ public Actions moveByOffset(int xOffset, int yOffset) { if (isBuildingActions()) { action.addAction(new MoveToOffsetAction(jsonMouse, null, xOffset, yOffset)); } return tick( defaultMouse.createPointerMove(Duration.ofMillis(200), Origin.pointer(), xOffset, yOffset)); }
private void drawCircle (AppiumDriver driver, Point origin, double radius, int steps) { Point firstPoint = getPointOnCircle(0, steps, origin, radius); PointerInput finger = new PointerInput(Kind.TOUCH, "finger"); Sequence circle = new Sequence(finger, 0); circle.addAction(finger.createPointerMove(NO_TIME, VIEW, firstPoint.x, firstPoint.y)); circle.addAction(finger.createPointerDown(MouseButton.LEFT.asArg())); for (int i = 1; i < steps + 1; i++) { Point point = getPointOnCircle(i, steps, origin, radius); circle.addAction(finger.createPointerMove(STEP_DURATION, VIEW, point.x, point.y)); } circle.addAction(finger.createPointerUp(MouseButton.LEFT.asArg())); driver.perform(Arrays.asList(circle)); }
/** * A convenience method that performs click-and-hold at the location of the source element, * moves by a given offset, then releases the mouse. * * @param source element to emulate button down at. * @param xOffset horizontal move offset. * @param yOffset vertical move offset. * @return A self reference. */ public Actions dragAndDropBy(WebElement source, int xOffset, int yOffset) { if (isBuildingActions()) { action.addAction(new ClickAndHoldAction(jsonMouse, (Locatable) source)); action.addAction(new MoveToOffsetAction(jsonMouse, null, xOffset, yOffset)); action.addAction(new ButtonReleaseAction(jsonMouse, null)); } return moveInTicks(source, 0, 0) .tick(defaultMouse.createPointerDown(LEFT.asArg())) .tick(defaultMouse.createPointerMove(Duration.ofMillis(250), Origin.pointer(), xOffset, yOffset)) .tick(defaultMouse.createPointerUp(LEFT.asArg())); }