diff --git a/webtau-browser/src/main/java/org/testingisdocumenting/webtau/browser/page/GenericPageElement.java b/webtau-browser/src/main/java/org/testingisdocumenting/webtau/browser/page/GenericPageElement.java index 692050b8d..9f82beacd 100644 --- a/webtau-browser/src/main/java/org/testingisdocumenting/webtau/browser/page/GenericPageElement.java +++ b/webtau-browser/src/main/java/org/testingisdocumenting/webtau/browser/page/GenericPageElement.java @@ -247,18 +247,18 @@ public void clear() { } @Override - public void dragAndDropOver(PageElement target) { + public void dragAndDropOver(PageElement target, Runnable beforeDrop) { execute(tokenizedMessage(action("dragging")).add(pathDescription).add(OVER).add(target.locationDescription()), () -> tokenizedMessage(action("dropped")).add(pathDescription).add(OVER).add(target.locationDescription()), - () -> dragAndDropOverStep(target)); + () -> dragAndDropOverStep(target, beforeDrop)); } @Override - public void dragAndDropBy(int offsetX, int offsetY) { + public void dragAndDropBy(int offsetX, int offsetY, Runnable beforeDrop) { execute(tokenizedMessage(action("dragging")).add(pathDescription), aMapOf("offsetX", offsetX, "offsetY", offsetY), () -> tokenizedMessage(action("dropped")).add(pathDescription), - () -> dragAndDropByStep(offsetX, offsetY)); + () -> dragAndDropByStep(offsetX, offsetY, beforeDrop)); } @Override @@ -533,7 +533,7 @@ private void performActions(String actionLabel, ActionsProvider actionsProvider) builtAction.perform(); } - private void dragAndDropOverStep(PageElement over) { + private void dragAndDropOverStep(PageElement over, Runnable beforeDrop) { WebElement source = findElement(); ensureNotNullElement(source, "drag source"); @@ -544,7 +544,7 @@ private void dragAndDropOverStep(PageElement over) { actions.dragAndDrop(source, target).build().perform(); } - private void dragAndDropByStep(int offsetX, int offsetY) { + private void dragAndDropByStep(int offsetX, int offsetY, Runnable beforeDrop) { WebElement source = findElement(); ensureNotNullElement(source, "drag source"); diff --git a/webtau-browser/src/main/java/org/testingisdocumenting/webtau/browser/page/PageElement.java b/webtau-browser/src/main/java/org/testingisdocumenting/webtau/browser/page/PageElement.java index be99fb79d..974446b28 100644 --- a/webtau-browser/src/main/java/org/testingisdocumenting/webtau/browser/page/PageElement.java +++ b/webtau-browser/src/main/java/org/testingisdocumenting/webtau/browser/page/PageElement.java @@ -68,8 +68,15 @@ public interface PageElement extends void hover(); void clear(); - void dragAndDropOver(PageElement target); - void dragAndDropBy(int offsetX, int offsetY); + void dragAndDropOver(PageElement target, Runnable beforeDrop); + default void dragAndDropOver(PageElement target) { + dragAndDropOver(target, () -> {}); + } + + void dragAndDropBy(int offsetX, int offsetY, Runnable beforeDrop); + default void dragAndDropBy(int offsetX, int offsetY) { + dragAndDropBy(offsetX, offsetY, () -> {}); + } /** * uses command on mac os x, and control on other OSes