Hogyan húzz be és vidd be Selenium (Példa)

⚡ Okos összefoglaló

Húzd be Selenium A WebDriver lehetővé teszi az egér alapú interakciók automatikus szimulációját, amelyek egy forráselemet mozgatnak, majd egy meghatározott célponton elengedik. Az Actions osztály ezeket a gesztusokat a dragAndDrop és a dragAndDropBy metódusokon keresztül hajtja végre a precíz, megismételhető böngészőautomatizálás érdekében.

  • 🎓 Használd az Actions osztályt billentyűzet- és egérgesztusok létrehozásához, majd hívd meg a build() és a perform() metódusokat a végrehajtásukhoz az oldalon.
  • 🌟 Válaszd a dragAndDrop(source, target) függvényt, ha mindkét elemmel rendelkezel, és a dragAndDropBy(source, xOffset, yOffset) függvényt, ha pixel szintű pontosságra van szükséged.
  • 🚀 A hibás tesztek elkerülése érdekében mindig várd meg, amíg a forrás- és célelemek jelen vannak, mielőtt meghívod a húzás műveletet.
  • 🎖️ Vizuálisan vagy attribútumváltozások érvényesítésével ellenőrizd a célponton a leejtést, így a teszt valódi interakciót igazol, ne csak egy sorban álló műveletet.
  • 🏆 A mesterséges intelligencia által támogatott helymeghatározók a felhasználói felület frissítései után javítják a hibás XPath útvonalakat, csökkentve a karbantartási igényt a CI-folyamatokban futó drag-and-drop csomagoknál.

Húzd be Selenium

Mi a húzás és ejtés funkció? Selenium?

Húzd be Selenium egy automatizált interakció, amely szimulálja egy forráselemre kattintást és nyomva tartását, az oldalon való mozgatását, majd egy célhelyen való elengedését. Széles körben használják modern webes alkalmazások tesztelésére, amelyek drag-and-drop felületeken alapulnak, mint például a fájlfeltöltők, kanban táblák, shop.ping bevásárlókocsik és műszerfal-készítők.

In Selenium WebDriver, a húzás és elengedés műveletet a Hozzászólások osztály, amely specializált metódusokat biztosít egérgesztusok láncolásához és egyetlen összetett műveletként történő végrehajtásához.

Húzd be Selenium

Az Actions osztály két fő módszert kínál a drag-and-drop automatizáláshoz:

Syntax:

Actions act = new Actions(driver);
//for drag and drop directly on an element
act.dragAndDrop(Source, Destination).build().perform();

//for drag and drop with pixel offsets
act.dragAndDropBy(WebElement Source, int xOffset, int yOffset).build().perform();

Itt, dragAndDrop() veszi a forrás és a cél webelemeket, míg dragAndDropBy() a forráselemet és az x/y pixel eltolásokat veszi figyelembe az elmozdításához.

Hogyan húzz be és vidd be Selenium

A következő három forgatókönyv a gyakorlati drag-and-drop automatizálást mutatja be a következőn: Guru99 demóoldal https://demo.guru99.com/test/drag_drop.htmlA cél az, hogy elmozdítsuk a BANK terhelési elem a Fiók terhelési oldali területet, hogy az 5000 dolláros összeg helyesen legyen elszámolva terhelési tranzakcióként.

1. forgatókönyv: Húzd és vidd módszerrel húzd át a mappát a dragAndDrop metódussal

Ebben az esetben a forráselemet (BANK) a célelemre (Számla terhelendő oldala) húzzuk a dragAndDrop(source, target) metódus, amely közvetlenül elfogadja a forrás és a cél webelemeket.

1. forgatókönyv beállítása húzással és elengedéssel

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 {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get("https://demo.guru99.com/test/drag_drop.html");

        // Locate the source (BANK) element
        WebElement Source = driver.findElement(By.xpath("//*[@id='credit2']/a"));
        // Locate the target (Account debit side) element
        WebElement Dest = driver.findElement(By.xpath("//*[@id='bank']/li"));

        // Create the Actions instance
        Actions act = new Actions(driver);
        // Perform drag and drop
        act.dragAndDrop(Source, Dest).build().perform();
    }
}

A szkript lefutása után a BANK a csempe bemozdul a Fiók terhelési területen, és az 5000 dolláros összeg terhelésként van regisztrálva.

Eclipse a drag and drop szkript futtatása

A demóoldalon látható vizuális eredmény így néz ki:

Húzd és vidd kimeneti animáció

2. forgatókönyv: Húzd és vidd módszer a dragAndDropBy metódussal

Az dragAndDropBy(source, xOffset, yOffset) a módszer pixel szintű pontosságot kínál. A csepegés helyettping egy célelemen a forrást egy megadott számú pixellel mozgatja az X és Y tengelyek mentén.

Az eltolás meghatározásához vigye az egérmutatót a böngésző célterülete fölé, és olvassa le a pixelkoordinátákat egy eszközzel, például az inspector vonalzóval vagy egy képernyőkoordináták-bővítménnyel.

Pixel-eltolások azonosítása a dragAndDropBy módszerhez

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 DragAndDropByExample {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get("https://demo.guru99.com/test/drag_drop.html");

        // Locate the source (BANK) element
        WebElement Source = driver.findElement(By.xpath("//*[@id='credit2']/a"));

        // Create the Actions instance
        Actions act = new Actions(driver);
        // Drag the source by 400 pixels right and 0 pixels down
        act.dragAndDropBy(Source, 400, 0).build().perform();
    }
}

A szkript a megadott eltolással elmozdítja a BANK csempét, és a Számla tartozik oldalára helyezi, ugyanazt a pénzügyi eredményt produkálva, mint az 1. forgatókönyvben.

3. forgatókönyv: Több elem áthúzása, elengedése és ellenőrzése

Ez a forgatókönyv több drag-and-drop műveletet láncol össze, és az eredményt a végső összeg célra történő rögzítésével ellenőrzi. Több forráselem (BANK, SALES, 5000, 500) átkerül a megfelelő terhelési és jóváírási zónákba, és a szkript megerősíti, hogy az összegek megegyeznek a várt egyenleggel.

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 DragAndDropMultiple {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get("https://demo.guru99.com/test/drag_drop.html");

        // Locate sources
        WebElement srcBank = driver.findElement(By.xpath("//*[@id='credit2']/a"));
        WebElement srcSales = driver.findElement(By.xpath("//*[@id='credit1']/a"));
        WebElement src5000 = driver.findElement(By.xpath("//*[@id='fourth']/a"));
        WebElement src500 = driver.findElement(By.xpath("//*[@id='fourth']/a"));

        // Locate targets
        WebElement debitSide = driver.findElement(By.xpath("//*[@id='bank']/li"));
        WebElement creditSide = driver.findElement(By.xpath("//*[@id='loan']/li"));
        WebElement amount7 = driver.findElement(By.xpath("//*[@id='amt7']/li"));
        WebElement amount8 = driver.findElement(By.xpath("//*[@id='amt8']/li"));

        Actions act = new Actions(driver);
        act.dragAndDrop(srcBank, debitSide).build().perform();
        act.dragAndDrop(srcSales, creditSide).build().perform();
        act.dragAndDrop(src5000, amount7).build().perform();
        act.dragAndDrop(src500, amount8).build().perform();

        // Verify the displayed total
        String total = driver.findElement(By.xpath("//*[@id='totamt']")).getText();
        if (total.equals("5500")) {
            System.out.println("Test Passed: total matches expected 5500");
        } else {
            System.out.println("Test Failed: actual total " + total);
        }
    }
}

Ez a minta bemutatja, hogyan kombinálható a drag and drop (fogd és vidd) más állításokkal a funkcionális viselkedés, nem csak a vizuális mozgás validálására.

A drag and drop automatizálás bevált gyakorlatai

A drag-and-drop tesztek a legbizonytalanabb szkriptek közé tartoznak. Selenium csomagban, mivel pontos egérkoordinátáktól és DOM-készültségtől függenek. A következő gyakorlatok biztosítják a megbízhatóságukat:

  • Várjon az elemekre: Felhasználás WebDriverWait ahol ExpectedConditions.elementToBeClickable mielőtt meghívná a húzást.
  • Inkább a dragAndDrop módszert részesítem előnyben JavaSzkript trükkök: A natív HTML5 húzási eseményekhez néha szükség van egy JavaSzkript tartalék, de először az Actions API-ra kell támaszkodni.
  • Görgesd a célt a látómezőbe: A képernyőn kívüli célhelyek csendes hibákat okoznak. Actions.scrollToElement vagy JavaSzkript görgetése húzás előtt.
  • Az eredmény ellenőrzése: Mindig mérhető állapotváltozást (szöveg, attribútum, darabszám) állíts be a drop után ahelyett, hogy a művelet lefuttatásában bíznál.
  • Stabil felbontáson futtatás: A pixel-eltolásos húzások megszakadnak, ha a nézetablak mérete eltér az eltolások kiszámításához használtól.

GYIK

Húzd be Selenium egy automatizált egérgesztus, amely felvesz egy forráselemet, majd elengedi azt egy célponton. A művelet az Actions osztályon keresztül hajtható végre a dragAndDrop vagy a dragAndDropBy metódus használatával.

A dragAndDrop függvény elfogadja a forrás és a cél webelemeket. A dragAndDropBy függvény a forrás, valamint az x és y pixel eltolások értékét veszi figyelembe, így pontos vezérlést biztosít, ha a célelem nem egy különálló elem.

A build() függvény egyetlen összetett műveletté fordítja le a láncolt interakciókat, és a perform() függvény végrehajtja azt. A perform() függvény nélkül a sorban álló lépések soha nem futnak le a böngészőben.

Sok HTML5 webhely natív húzási eseményeket használ, amelyeket az Actions API nem mindig aktivál. Ilyen esetekben a dragstart, dragover és drop eseményeket executeScript segítségével kell kiküldeni. JavaSzkript tartalék.

Nyisd meg a böngésző DevTools eszközeit, vidd az egérmutatót a cél fölé, és olvasd be az elem getBoundingClientRect értékeit.traca forráspozíciót a célpozíciótól az x és y eltolás pixelben történő meghatározásához.

Igen. A WebDriverWait forrás- és célkereséseit az ExpectedConditions.elementToBeClickable paraméterrel kell becsomagolni, így a húzás csak azután fut le, hogy mindkét elem interaktív lett, csökkentve ezzel a CI-futtatások egyenetlenségét.

A mesterséges intelligencia eszközei önjavító lokátorokat biztosítanak, amelyek alkalmazkodnak az XPath útvonalak változásához, és stabil szelektorokat javasolnak a forrás- és célelemekhez. Ez csökkenti a karbantartási igényt a különböző kiadásokban futó drag-and-drop csomagoknál.

Igen. A mesterséges intelligencia által fejlesztett kódolóasszisztensek egy egyszerű angol forgatókönyvet, például a „BANK áthúzása a terhelési oldalra és az összeg érvényesítése” típusú műveletet egy teljes műveletlánccá alakítanak át, amely dragAndDrop, build, perform és egy ellenőrzési lépést is tartalmaz.

Foglald össze ezt a bejegyzést a következőképpen: