Jak przeciągnąć i upuścić Selenium (Przykład)
Przeciągnij i upuść w selenie
Niektóre aplikacje internetowe mają funkcję przeciągania elementów internetowych i upuszczania ich na określonym obszarze lub elemencie. Możemy zautomatyzować przeciąganie i upuszczanie takich elementów za pomocą Selenium Sterownik internetowy.
Przeciągnij i upuść składnia
Klasa Actions ma dwie metody obsługujące przeciąganie i upuszczanie. Przestudiujmy je-
Actions.dragAndDrop(Sourcelocator, Destinationlocator)
Jak przeciągnąć i upuścić Selenium
Oto jak przeciągnąć i upuścić element za pomocą Selenium Sterownik internetowy
W metodzie dragAndDrop przekazujemy dwa parametry –
- Pierwszy parametr „Sourcelocator” to element, który musimy przeciągnąć
- Drugi parametr „Destinationlocator” to element, na który musimy upuścić pierwszy element
Actions.dragAndDropBy(Sourcelocator, x-axis pixel of Destinationlocator, y-axis pixel of Destinationlocator)
metodą dragAndDropBy przekazujemy 3 parametry –
- Pierwszy parametr „Sourcelocator” to element, który musimy przeciągnąć
- Drugi parametr to wartość w pikselach osi X wynosząca 2nd element, na który musimy upuścić pierwszy element.
- Trzeci parametr to wartość w pikselach osi Y drugiego elementu, na który musimy upuścić pierwszy element.
Pokażemy Ci w praktyce przeciąganie i upuszczanie elementu za pomocą sterownika internetowego Selenium, korzystając z następujących 3 scenariuszy
Scenariusz 1: Element BANK jest przeciągany i upuszczany na konkretną komórkę metodą DragAndDrop.
W poniższym kodzie uruchamiamy podany adres URL w Firefox przeglądarki, a następnie przeciągnij element BANK i upuść go na bloku DEBIT SIDE za pomocą metody 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(); } }
Wyjaśnienie kodu: W powyższym kodzie uruchamiamy podany URL w Firefox przeglądarka, a następnie przeciągnij element BANK i upuść na bloku DEBIT SIDE za pomocą metody dragAndDrop. Wyjaśniono pokrótce poniżej:
Najpierw zdobywamy 1st element, który musimy przeciągnąć do zmiennej „From”.
WebElement From=driver.findElement(By.xpath("//*[@id='credit2']/a"));
Po drugie, przechwytujemy drugi element, na który musimy upuścić pierwszy element w zmiennej „To”.
WebElement To=driver.findElement(By.xpath("//*[@id='bank']/li"));
Po trzecie, tworzymy obiekt klasy Actions, korzystając z metod klasy Actions.
Actions act=new Actions(driver);
Do elementu przeciągnij i upuść używamy metody dragAndDrop klasy Actions i przekazujemy parametry jako pierwszy element (Sourcelocator) „Fro” i drugi element (Destinationlocator) „To”. Poniższa linia przeciągnie 1st element i upuść go na 2nd elementem.
act.dragAndDrop(From, To).build().perform();
Wykonanie skryptu.
Teraz możesz wykonać powyższy skrypt jeden po drugim z poziomu Eclipse, jak pokazano na zrzucie ekranu poniżej.
Oto wynik działania skryptu
Scenariusz 2: Element BANK jest przeciągany i upuszczany na określoną komórkę metodą DragAndDropBy.
W tym scenariuszu uruchamiamy podany adres URL w przeglądarce, a następnie przeciągamy element BANK i upuszczamy na blok DEBIT SIDE metodą dragAndDropBy. Aby przeciągnąćAndDropBy, musimy znaleźć piksel elementu.
Jak znaleźć Pixela?
Otwórz adres URL w Chrome lub FireFox i kliknij niebieską strzałkę.
Następnie kliknij dowolny element, dla którego chcesz poznać piksel.
Piksel znajdziesz nad elementem, jak pokazano na poniższym zrzucie ekranu.
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(); } }
UWAGA: Wartości pikseli zmieniają się wraz z rozdzielczością ekranu i rozmiarem przeglądarki. Metoda ta nie jest zatem niezawodna i mało stosowana.
Scenariusz 3: Przeciągamy i upuszczamy kilka elementów, a następnie sprawdzamy, czy komunikat został wyświetlony.
W poniższym kodzie uruchamiamy podany adres URL w przeglądarce, a następnie przeciągamy elementy takie jak BANK, SALES, 500 i upuszczamy na odpowiedni blok. Po wykonaniu tej czynności weryfikujemy komunikat wyjściowy.
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 !!!"); } }
Analiza wyników
W wyjściu widać, że element jest przeciągany i upuszczany na zdefiniowany element. Możesz sprawdzić GIF wyjścia.
Podsumowanie
- W powyższych samouczkach ilustrujemy funkcję przeciągania i upuszczania aplikacji internetowej za pomocą metod akcji w Webdriver:
- dragAndDrop(lokator źródła, lokalizator miejsca docelowego)
- dragAndDropBy(Sourcelocator, piksel na osi x lokalizatora docelowego, piksel na osi y lokalizatora docelowego)
- Aby najpierw przeciągnąć i upuścić element wykorzystaliśmy metodę DragAndDrop z klasy Actions, w której przekazujemy 2 parametry, 1st parametr to element, który musimy przeciągnąć, oraz 2nd parametr jest elementem, na który musimy upuścić 1st elementem.
- Po drugie użyliśmy metody dragAndDropBy z klasy Actions w której przekazujemy 3 parametry, pierwszy parametr to element który mamy przeciągnąć, 1nd parametrem jest wartość piksela na osi x wartości 2nd pierwiastek, 3rd parametrem jest wartość piksela na osi Y wartości 2nd elementem.