top of page

WebDriver-Drag And Drop

Some of the web applications have functionality  to drag a specific webelement and drop on a specific webelement.

Drag and drop can be automated using selenium webdriver.

To achieve such automation selenium provides Actions class.

The Action class has two methods that performs drag and drop in different ways, methods are :

  • dragAndDrop(SourceLocator,DestinationLocator);

  • dragAndDropBy(SourceLocator,x-axis pixel of DestinationLocator,y-axis pixel of DestionationLocator);

SourceLocator

It is a location(locator) of webelement which have to be dragged.

DestinationLocator

It is a location(locator) on which the dragged webelement have to be dropped.

For automating drag and drop first we have to import Action class.

import org.openqa.selenium.interactions.Actions;

Now create an object for Actions class.

Actions action=new Actions(driver);

Using dragAndDrop() method

This is a parameterized method and accepts only WebElement as a parameter.

action.dragAndDrop(SourceLocator1, DestinationLocator1).build().perform();

Using dragAndDropBy() method

This is also a parameterized method that accepts one WebElement and to integer as a parameter.

action.dragAndDropBy(SourceLocator2,x,y).build().perform();

* Here build() and perform() are used to perform the required action.

Here is a complete code for drag and drop =>

package seleniumexamples;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;

public class DragAndDropExample {
   
   
void toVerify(String ActualText,String ExpectedText,String ElementName) {
       
       
if(ExpectedText.equals(ActualText))
           System.
out.println("PASS! Dragged Element '"+ElementName+"' is Dropped at Target Location !!!");
       
else
           System.out.println("FAIL! Element '"+ElementName+"' is not Dropped at Target Location !!!");
       
   }

    public static void main(String[] args) throws InterruptedException {
       // TODO Auto-generated method stub
       WebDriver driver;
       String
baseURL="https://demo.guru99.com/test/drag_drop.html";
       String
ActualText,ExpectedText,ElementName;
       
       DragAndDropExample
draganddrop=new DragAndDropExample();
       
       //Launch the web browser...
       System.setProperty("webdriver.chrome.driver","
..\\SeleniumJava\\drivers\\chromedriver99.exe");
       
driver=new ChromeDriver();
       

       //To maximize the size of window...
       driver.manage().window().maximize();
       

       //Navigate through an URL..
       driver.get(baseURL);
       

       //Instantiate Actions class to access dragAndDrop() and dragAndDropBy() methods...
       Actions action=new Actions(driver);
       

       // 1. By using dragDrop() method...
       System.out.println("\nPerforming Drag and Drop with dropAndDown() Method ...");
       WebElement
SourceLocator1=driver.findElement(By.id ("credit2"));
       WebElement
DestinationLocator1=driver.findElement(By.xpath("//ol[@id='bank']"));
       
       
//Invoke dragAndDrop() method...
       action.dragAndDrop(SourceLocator1, DestinationLocator1).build().perform();
       
     
 //to verify the operation...
       ActualText="BANK";
       
ElementName=ActualText;
       
ExpectedText=DestinationLocator1.getText();
       
draganddrop.toVerify(ActualText,ExpectedText,ElementName);

        // 2. By using dragAndDropBy() method...
       System.out.println("\nPerforming Drag and Drop with dropAndDownBy() Method ...");
       WebElement
SourceLocator2=driver.findElement(By.id ("credit1"));
       WebElement
DestinationLocator2=driver.findElement(By.xpath("//ol[@id='loan']"));
       
       int
x1=SourceLocator2.getLocation().getX();
       int
y1=SourceLocator2.getLocation().getY();
       int
x=DestinationLocator2.getLocation().getX();
       int
y=DestinationLocator2.getLocation().getY();
       
       System.
out.println("Pixel along x-axis of source : "+x1);
       System.
out.println("Pixel along y-axis of source : "+y1);
       System.
out.println("Pixel along x-axis of destination : "+x);
       System.
out.println("Pixel along y-axis of destination : "+y);
       
       
x=x-x1;
       
y=y-y1;
       
       
//Invoke the method dragAndDropBy...
       action.dragAndDropBy(SourceLocator2,x,y).build().perform();
       
     
 //to verify the operation...
       ActualText="SALES";
       
ElementName=ActualText;
       
ExpectedText=DestinationLocator2.getText();
       
draganddrop.toVerify(ActualText,ExpectedText,ElementName);
           
       Thread.sleep(5000);
       
driver.quit();

    }

}

 

 

Output :

 

Performing Drag and Drop with dropAndDown() Method ...
PASS! Dragged Element 'BANK' is Dropped at Target Location !!!

Performing Drag and Drop with dropAndDownBy() Method ...
Pixel along x-axis of source : 689
Pixel along y-axis of source : 360
Pixel along x-axis of destination : 561
Pixel along y-axis of destination : 607
PASS! Dragged Element 'SALES' is Dropped at Target Location !!!

Refer next page Handling RadioButtons And CheckBoxes

bottom of page