Как перетащить Selenium (Пример)
Перетаскивание в селене
Некоторые веб-приложения имеют функцию перетаскивания веб-элементов в определенную область или элемент. Мы можем автоматизировать перетаскивание таких элементов, используя Selenium Вебдрайвер.
Синтаксис перетаскивания
Класс Actions имеет два метода, поддерживающих перетаскивание. Давайте изучим их-
Actions.dragAndDrop(Sourcelocator, Destinationlocator)
Как перетащить Selenium
Вот как перетащить элемент, используя Selenium Вебдрайвер
В методе dragAndDrop мы передаем два параметра:
- Первый параметр «Sourcelocator» — это элемент, который нам нужно перетащить.
- Второй параметр «Destinationlocator» — это элемент, на который нам нужно поместить первый элемент.
Actions.dragAndDropBy(Sourcelocator, x-axis pixel of Destinationlocator, y-axis pixel of Destinationlocator)
dragAndDropBy мы передаем 3 параметра –
- Первый параметр «Sourcelocator» — это элемент, который нам нужно перетащить.
- Второй параметр — это значение пикселя по оси X 2.nd элемент, на который нам нужно поместить первый элемент.
- Третий параметр — это значение пикселя по оси 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("https://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. Кратко объяснено ниже:
Сначала мы захватываем 1st элемент, который нам нужно перетащить в переменную «От».
WebElement From=driver.findElement(By.xpath("//*[@id='credit2']/a"));
Во-вторых, мы захватываем второй элемент, на который нам нужно поместить первый элемент в переменной «To».
WebElement To=driver.findElement(By.xpath("//*[@id='bank']/li"));
В-третьих, мы создаем объект класса Actions, используя методы класса Actions.
Actions act=new Actions(driver);
Для перетаскивания элемента мы используем метод dragAndDrop класса Actions и передаем параметры в качестве первого элемента (локатор источника) «От» и второго элемента (локатор назначения) «Кому». Линия ниже перетащит 1st элемент и поместите его на 2nd элемент.
act.dragAndDrop(From, To).build().perform();
Исполнение скрипта.
Теперь вы можете выполнить приведенный выше скрипт один за другим из eclipse, как показано на снимке экрана ниже.
Вот вывод при запуске скрипта
Сценарий 2: элемент BANK перетаскивается в определенную ячейку с помощью метода DragAndDropBy.
В этом сценарии мы запускаем указанный URL-адрес в браузере, а затем перетаскиваем элемент BANK в блок DEBIT SIDE с помощью метода dragAndDropBy. Чтобы перетащитьAndDropBy, нам нужно найти пиксель элемента.
Как найти Пикселя?
Откройте URL-адрес в Chrome или Fire.Fox и нажмите на стрелку синего цвета.
Затем нажмите на любой элемент, для которого вы хотите узнать пиксель.
Вы найдете пиксель над элементом, как показано на снимке экрана ниже.
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("https://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 Offset. act.dragAndDropBy(From,135, 40).build().perform(); } }
ПРИМЕЧАНИЕ: Значения пикселей меняются в зависимости от разрешения экрана и размера браузера. Следовательно, этот метод ненадежен и широко не используется.
Сценарий 3: несколько элементов перетаскиваются, а затем проверяются, отображается ли сообщение или нет.
В следующем коде мы запускаем указанный URL-адрес в браузере, а затем перетаскиваем такие элементы, как БАНК, ПРОДАЖИ, 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("https://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 !!!"); } }
Выходной анализ
В выводе вы можете видеть, что элемент перетаскивается на определенный элемент. Вы можете проверить GIF вывода.
Резюме
- В приведенных выше руководствах мы иллюстрируем функцию перетаскивания веб-приложения с помощью методов действий в Webdriver:
- dragAndDrop (локатор источника, локатор назначения)
- dragAndDropBy(Sourcelocator, пиксель по оси X локатора назначения, пиксель по оси Y локатора назначения)
- Чтобы перетащить элемент, мы сначала использовали метод DragAndDrop из класса Actions, в который передаем 2 параметра: 1.st параметр — это элемент, который нам нужно перетащить, а 2nd параметр — это элемент, на который нам нужно поместить 1st элемент.
- Во-вторых, мы использовали метод dragAndDropBy из класса Actions, в который передаем 3 параметра, первый параметр — это элемент, который нам нужно перетащить, 1nd Параметр — это значение пикселя по оси X 2nd элемент, 3rd Параметр — это значение пикселя по оси Y 2nd элемент.