Учебники

60) Drag & Drop Selenium

Некоторые веб-приложения имеют функцию перетаскивания веб-элементов и размещения их в определенной области или элементе. Мы можем автоматизировать перетаскивание таких элементов с помощью Selenium Webdriver.

Синтаксис для перетаскивания.

Класс Actions имеет два метода, которые поддерживают Drag и Drop. Давайте изучать их

Actions.dragAndDrop(Sourcelocator, Destinationlocator)

В методе dragAndDrop мы передаем два параметра —

  1. Первый параметр «Sourcelocator» — это элемент, который нам нужно перетащить
  2. Второй параметр «Destinationlocator» — это элемент, на который нам нужно сбросить первый элемент.
Actions.dragAndDropBy(Sourcelocator, x-axis pixel of Destinationlocator, y-axis pixel of Destinationlocator)

Метод dragAndDropBy мы передаем 3 параметра —

  1. Первый параметр «Sourcelocator» — это элемент, который нам нужно перетащить
  2. Второй параметр оси х значение пикселя 2 — го элемента , на который мы должны отбросить первый элемент.
  3. Третий параметр — это значение пикселя по оси Y для второго элемента, на который нам нужно поместить первый элемент.

Практически покажем перетаскивание элемента с помощью веб-драйвера selenium в следующих 3 сценариях.

Сценарий 1: элемент BANK перетаскивается в определенную ячейку методом DragAndDrop.

В следующем коде мы запускаем указанный URL в браузере Firefox, а затем перетаскиваем элемент BANK и перетаскиваем в блок DEBIT SIDE с помощью метода dragAndDrop.

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;		
import org.testng.annotations.Test;		

public class DragAndDrop {				

    WebDriver driver;			

    @Test		
    public void DragnDrop()					
    {		
         System.setProperty("webdriver.chrome.driver"," E://Selenium//Selenium_Jars//chromedriver.exe ");					
         driver= new ChromeDriver();					
         driver.get("http://demo.guru99.com/test/drag_drop.html");					
         
		//Element which needs to drag.    		
        	WebElement From=driver.findElement(By.xpath("//*[@id='credit2']/a"));	
         
         //Element on which need to drop.		
         WebElement To=driver.findElement(By.xpath("//*[@id='bank']/li"));					
         		
         //Using Action class for drag and drop.		
         Actions act=new Actions(driver);					

	//Dragged and dropped.		
         act.dragAndDrop(From, To).build().perform();		
	}		
}

Объяснение кода: В приведенном выше коде мы запускаем указанный URL в браузере Firefox, а затем перетаскиваем элемент BANK и перетаскиваем в блок DEBIT SIDE с помощью метода dragAndDrop. Кратко объяснено ниже:

Во- первых, мы фиксируем 1 — й элемент , который нам нужно перетащить в переменной «С» .

WebElement From=driver.findElement(By.xpath("//*[@id='credit2']/a"));		

Во-вторых, мы фиксируем 2-й элемент, на который нам нужно поместить 1-й элемент в переменную «To».

WebElement To=driver.findElement(By.xpath("//*[@id='bank']/li"));		

В-третьих, мы создаем объект класса Actions, так как используем методы класса Actions.

Actions act=new Actions(driver);		

Для перетаскивания элемента мы используем метод dragAndDrop класса Actions и передаем параметры в качестве первого элемента (Sourcelocator) «From» и второго элемента (Destinationlocator) «To». Под линией перетащите 1- й элемент и поместите его на 2- й элемент.

act.dragAndDrop (From, To) .build (). execute ();

Выполнение сценария.

Теперь вы можете выполнить вышеуказанный скрипт один за другим из eclipse, как показано на скриншоте ниже.

Вот вывод при запуске скрипта

Сценарий 2: элемент BANK перетаскивается в определенную ячейку методом DragAndDrop.

В этом сценарии мы запускаем указанный URL в браузере, а затем перетаскиваем элемент BANK и перетаскиваем в блок DEBIT SIDE с помощью метода dragAndDropBy. Чтобы перетащить AndDropBy, нам нужно найти пиксель элемента.

Как найти пиксель?

Откройте URL в Chrome или FireFox и нажмите на синюю стрелку цвета.

Затем нажмите на любой элемент, для которого вы хотите знать пиксель.

Вы найдете пиксель над элементом, как показано на скриншоте ниже.

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;		
import org.testng.annotations.Test;		


public class DragAndDrop {				

    WebDriver driver;			
    @Test		
    public void DragnDrop()					
    {		
         System.setProperty("webdriver.chrome.driver","E://Selenium//Selenium_Jars//chromedriver.exe");					
         driver= new ChromeDriver();					
         driver.get("http://demo.guru99.com/test/drag_drop.html");					
     
	//Element(BANK) which need to drag.		
        WebElement From=driver.findElement(By.xpath("//*[@id='credit2']/a"));					
      
        //Using Action class for drag and drop.		
        Actions act=new Actions(driver);					
      
        //Drag and Drop by Pixel.		
        act.dragAndDropBy(From,135, 40).build().perform();		
 }		
}

ПРИМЕЧАНИЕ. Значения пикселей изменяются в зависимости от разрешения экрана и размера браузера. Этот метод, следовательно, не является надежным и широко не используется.

Сценарий 3. Немного элементов перетаскивают и отбрасывают, а затем проверяют, отображается сообщение или нет.

В следующем коде мы запускаем указанный URL-адрес в браузере, а затем перетаскиваем элементы, такие как BANK, SALES, 500, и помещаем их в соответствующий блок. После этого мы проверяем выходное сообщение.

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;		
import org.testng.annotations.Test;		

public class DragAndDrop {				

    WebDriver driver;			
    @Test		
    public void DragnDrop()					
    {		
    	 System.setProperty("webdriver.chrome.driver"," E://Selenium//Selenium_Jars//chromedriver.exe");					
         driver= new ChromeDriver();					
         driver.get("http://demo.guru99.com/test/drag_drop.html");					
     
	//Element(BANK) which need to drag.		
     	 WebElement From1=driver.findElement(By.xpath("//*[@id='credit2']/a"));	
         
     	//Element(DEBIT SIDE) on which need to drop.		
     	WebElement To1=driver.findElement(By.xpath("//*[@id='bank']/li"));					
      
	//Element(SALES) which need to drag.		
     	WebElement From2=driver.findElement(By.xpath("//*[@id='credit1']/a"));
        
	//Element(CREDIT SIDE) on which need to drop.  		
     	WebElement To2=driver.findElement(By.xpath("//*[@id='loan']/li"));					
     
     	//Element(500) which need to drag.		
        WebElement From3=driver.findElement(By.xpath("//*[@id='fourth']/a"));					
        
        //Element(DEBIT SIDE) on which need to drop.		
     	WebElement To3=driver.findElement(By.xpath("//*[@id='amt7']/li"));					
         
	//Element(500) which need to drag.		
        WebElement From4=driver.findElement(By.xpath("//*[@id='fourth']/a"));					
        
        //Element(CREDIT SIDE) on which need to drop.		
     	WebElement To4=driver.findElement(By.xpath("//*[@id='amt8']/li"));					
      
	//Using Action class for drag and drop.		
     	Actions act=new Actions(driver);					

	//BANK drag and drop.		
     	act.dragAndDrop(From1, To1).build().perform();
        
	//SALES drag and drop.		
     	act.dragAndDrop(From2, To2).build().perform();
        
	//500 drag and drop debit side.		
     	act.dragAndDrop(From3, To3).build().perform();	
        
	//500 drag and drop credit side. 		
     	act.dragAndDrop(From4, To4).build().perform();		
      
	//Verifying the Perfect! message.		
	if(driver.findElement(By.xpath("//a[contains(text(),'Perfect')]")).isDisplayed())							
     	{		
         	System.out.println("Perfect Displayed !!!");					
     	}
		else
     	{
        	System.out.println("Perfect not Displayed !!!");					
     	}		
}

Выходной анализ

В Output вы можете увидеть, как элемент перетаскивается на определенный элемент. Вы можете проверить GIF на выходе.

Резюме

  • В вышеприведенных руководствах мы иллюстрируем функциональность перетаскивания веб-приложения с помощью методов Action в Webdriver:
  • dragAndDrop (Sourcelocator, Destinationlocator)
  • dragAndDropBy (Sourcelocator, пиксель оси x Destinationlocator, пиксель оси y Destinationlocator)
  • Для перетаскивания элемента сначала мы использовали метод DragAndDrop из класса Actions, в котором мы передаем 2 параметра, 1- й параметр — это элемент, который нам нужно перетащить, а 2- й параметр — это элемент, на который нам нужно удалить 1 ст элемент.
  • Во-вторых, мы использовали метод dragAndDropBy из класса Actions, в котором передаем 3 параметра, 1-й параметр — это элемент, который нам нужно перетащить, 2- й параметр — значение пикселя по оси X 2- го элемента, 3- й параметр это значение пикселя у-ось 2 — го элемента.