</>

Technology

Selenium

Difficulty

Intermediate

Interview Question

How to perform drag and drop in Selenium?

Use Actions.dragAndDrop(source, target) or clickAndHold + moveToElement + release to simulate drag and drop.

Answer

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);

Follow AutomateQA

Related Topics