@Override public List<Interaction> asInteractions(PointerInput mouse, KeyInput keyboard) { List<Interaction> interactions = new ArrayList<>(moveToLocation(mouse)); interactions.add(mouse.createPointerDown(Button.LEFT.asArg())); interactions.add(mouse.createPointerUp(Button.LEFT.asArg())); interactions.add(mouse.createPointerDown(Button.LEFT.asArg())); interactions.add(mouse.createPointerUp(Button.LEFT.asArg())); return Collections.unmodifiableList(interactions); } }
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); } }
@Override public Map<String, Object> encode() { Map<String, Object> toReturn = new HashMap<>(); toReturn.put("type", getInputType().getType()); toReturn.put("id", name); Map<String, Object> parameters = new HashMap<>(); parameters.put("pointerType", kind.getWireName()); toReturn.put("parameters", parameters); return toReturn; }
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)); }
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) { List<Interaction> interactions = new ArrayList<>(moveToLocation(mouse)); interactions.add(mouse.createPointerUp(Button.LEFT.asArg())); return Collections.unmodifiableList(interactions); } }
/** * Clicks (without releasing) at the current mouse location. * @return A self reference. */ public Actions clickAndHold() { if (isBuildingActions()) { action.addAction(new ClickAndHoldAction(jsonMouse, null)); } return tick(defaultMouse.createPointerDown(LEFT.asArg())); }
@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); } }
/** * Releases the depressed left mouse button at the current mouse location. * @see #release(org.openqa.selenium.WebElement) * @return A self reference. */ public Actions release() { if (isBuildingActions()) { action.addAction(new ButtonReleaseAction(jsonMouse, null)); } return tick(defaultMouse.createPointerUp(Button.LEFT.asArg())); }
/** * Clicks (without releasing) in the middle of the given element. This is equivalent to: * <i>Actions.moveToElement(onElement).clickAndHold()</i> * * @param target Element to move to and click. * @return A self reference. */ public Actions clickAndHold(WebElement target) { if (isBuildingActions()) { action.addAction(new ClickAndHoldAction(jsonMouse, (Locatable) target)); } return moveInTicks(target, 0, 0) .tick(defaultMouse.createPointerDown(LEFT.asArg())); }
@Override public List<Interaction> asInteractions(PointerInput mouse, KeyInput keyboard) { List<Interaction> interactions = new ArrayList<>(); interactions.addAll(moveToLocation(mouse)); interactions.add(mouse.createPointerDown(Button.RIGHT.asArg())); interactions.add(mouse.createPointerUp(Button.RIGHT.asArg())); return Collections.unmodifiableList(interactions); } }
/** * 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())); }
private Actions moveInTicks(WebElement target, int xOffset, int yOffset) { return tick(defaultMouse.createPointerMove( Duration.ofMillis(100), Origin.fromElement(target), xOffset, yOffset)); }
/** * Releases the depressed left mouse button, in the middle of the given element. * This is equivalent to: * <i>Actions.moveToElement(onElement).release()</i> * * Invoking this action without invoking {@link #clickAndHold()} first will result in * undefined behaviour. * * @param target Element to release the mouse button above. * @return A self reference. */ public Actions release(WebElement target) { if (isBuildingActions()) { action.addAction(new ButtonReleaseAction(jsonMouse, (Locatable) target)); } return moveInTicks(target, 0, 0).tick(defaultMouse.createPointerUp(LEFT.asArg())); }
@Override public List<Interaction> asInteractions(PointerInput mouse, KeyInput keyboard) { List<Interaction> interactions = new ArrayList<>(moveToLocation(mouse)); interactions.add(mouse.createPointerDown(Button.LEFT.asArg())); interactions.add(mouse.createPointerUp(Button.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 Actions clickInTicks(PointerInput.MouseButton button) { tick(defaultMouse.createPointerDown(button.asArg())); tick(defaultMouse.createPointerUp(button.asArg())); return this; }
/** * A convenience method that performs click-and-hold at the location of the source element, * moves to the location of the target element, then releases the mouse. * * @param source element to emulate button down at. * @param target element to move to and release the mouse at. * @return A self reference. */ public Actions dragAndDrop(WebElement source, WebElement target) { if (isBuildingActions()) { action.addAction(new ClickAndHoldAction(jsonMouse, (Locatable) source)); action.addAction(new MoveMouseAction(jsonMouse, (Locatable) target)); action.addAction(new ButtonReleaseAction(jsonMouse, (Locatable) target)); } return moveInTicks(source, 0, 0) .tick(defaultMouse.createPointerDown(LEFT.asArg())) .moveInTicks(target, 0, 0) .tick(defaultMouse.createPointerUp(LEFT.asArg())); }