▸Method 1: dragAndDrop() — Simplest
Java
WebElement source = driver.findElement(By.id("draggable"));
WebElement target = driver.findElement(By.id("droppable"));
Actions actions = new Actions(driver);
actions.dragAndDrop(source, target).perform();
▸Method 2: clickAndHold + moveToElement + release
Java
Actions actions = new Actions(driver);
actions.clickAndHold(source)
.moveToElement(target)
.release()
.build()
.perform();
▸Method 3: Drag by pixel offset
Java
actions.clickAndHold(source)
.moveByOffset(200, 0)
.release()
.perform();
If dragAndDrop does not work (HTML5 drag events): Some modern apps use HTML5 drag events that Selenium Actions may not trigger. Use JavaScript in that case:
Java
String script = "var dt = new DataTransfer(); " +
"arguments[0].dispatchEvent(new DragEvent(''dragstart'',{dataTransfer:dt,bubbles:true})); " +
"arguments[1].dispatchEvent(new DragEvent(''drop'',{dataTransfer:dt,bubbles:true}));";
((JavascriptExecutor) driver).executeScript(script, source, target);
