Akcióosztály Selenium

⚡ Okos összefoglaló

Akcióosztály Selenium A program a Speciális felhasználói interakciók API-ján keresztül kezeli a speciális billentyűzet- és egérműveleteket, például az egérrel való mozgatást, a húzást és elengedést, a jobb gombbal kattintást és a billentyűkombinációkat. Ez az oktatóanyag ismerteti az Actions és az Action osztályokat, a kulcsmetódusokat, és azt, hogyan lehet több interakciót egyetlen sorozattá láncolni.

  • 🖱️ Fő cél: Az Actions osztály automatizálja az összetett egér- és billentyűzetes műveleteket, amire az alapvető click() nem képes.
  • 🔑 Két osztály: Az Actions (műveletek) felépíti az interakciót; az Action (művelet) tárolja a lefordított, végrehajtandó sorozatot.
  • 🧱 Építsd fel, majd hajtsd végre: Láncmetódusok, befejezés a build() függvénnyel, és futtatás a perform() függvénnyel.
  • 📋 Főbb módszerek: moveToElement(), dragAndDrop(), keyDown()/keyUp(), contextClick() és sendKeys().
  • 🤖 MI-aktiválás: Az MI asszisztensek interakciós tesztek során Action osztálykódot és öngyógyító lokátorokat generálnak.

Egér fölé mozgatás kimenete

Akcióosztály Selenium

Akcióosztály Selenium egy beépített funkció a billentyűzet- és egérműveletek kezelésére. Támogatja az olyan műveleteket, mint a többszörös kattintás a Control billentyűvel, a húzás és elengedés és sok más. Ezeket a műveleteket a Speciális felhasználói interakciók API-jával lehet végrehajtani a... Selenium WebDriver.

Billentyűzet és egér események kezelése

A speciális billentyűzet- és egéresemények kezelése a következővel történik: Advanced User Interactions API. Ez tartalmazza a Hozzászólások és a Akció az események végrehajtásához szükséges osztályok. Az Actions osztály által biztosított leggyakrabban használt billentyűzet- és egéresemények az alábbiakban láthatók.

Módszer Leírás
clickAndHold() Kattintások (elengedés nélkül) az egér aktuális helyén.
ContextClick() Helyi kattintást (jobb kattintást) hajt végre az egér aktuális helyén.
doubleClick() Dupla kattintást hajt végre az egér aktuális helyén.
dragAndDrop(forrás, cél) Kattintás és nyomva tartás a forráselemen, ugrás a célelemre, majd elengedés. Paraméterek: forrás (kattintandó elem), cél (elengedendő elem).
dragAndDropBy(forrás, x-eltolás, y-eltolás) Kattintás és nyomva tartás a forráselemen, adott eltolással elmozdul, majd elengedés. Paraméterek: forrás, xOffset (vízszintes), yOffset (függőleges).
keyDown(módosító_kulcs) Lenyom egy módosító billentyűt anélkül, hogy elengedné, így a későbbi interakciók azt feltételezik, hogy lenyomva marad. Paraméter: egy módosító billentyű (Keys.ALT, Keys.SHIFT vagy Keys.CONTROL).
keyUp(módosító_kulcs) Módosító billentyű feloldása. Paraméter: egy módosító billentyű (Keys.ALT, Keys.SHIFT vagy Keys.CONTROL).
moveByOffset(x-eltolás, y-eltolás) Az egérkurzort az aktuális pozíciójából (vagy 0,0-ból) a megadott eltolással mozgatja. A negatív x balra, a negatív y felfelé mozdul.
mozgatni az elemhez (elemhez) Az egérkurzort az elem közepére mozgatja. Paraméter: az elem, amelyre mozgatni kell.
kiadás() Felengedi a lenyomott bal egérgombot az aktuális helyen.
sendKeys (egy elem, karaktersorozat) Billentyűleütések sorozatát küldi el egy elemnek. Paraméterek: onElement (általában egy szövegmező), charsequence (az elküldendő billentyűleütések száma).

A következő példában a moveToElement() módszer, hogy az egyik fölé vigyük az egeret Mercury Túrák táblázat sorai.

Billentyűzet- és egéresemények kezelése

A fent látható cella egy része elem. Amikor nincs föléjük mozgatva az egérmutató, a színe #FFC455 (narancssárga). Az egér fölé mozgatása után a cella színe átlátszóvá válik, és megegyezik a környező táblázat hátterével.

Step 1) Importálja a Hozzászólások és a Akció osztályok.

Műveletek és Műveletosztályok importálása

Step 2) Példányosítson egy új Actions objektumot.

Műveletek objektum példányosítása

Step 3) Hozz létre egy Action példányt a 2. lépésben használt Actions objektummal.

Művelet objektum példányosítása

Itt használjuk a moveToElement() módszer, hogy az egérmutatót a „Kezdőlap” link fölé vigyük. build() A metódust mindig utoljára hívjuk meg, így az összes felsorolt ​​művelet egyetlen lépésbe lesz összeállítva.

Step 4) Használja a perform() metódus a 3. lépésben tervezett Action objektum végrehajtásához.

Végezze el a műveletet

Az alábbiakban a teljes WebDriver kód látható, amely ellenőrzi a háttér színét. elem az egér fölé helyezése előtt és után.

package newproject;

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Action;
import org.openqa.selenium.interactions.Actions;

public class PG7 {

    public static void main(String[] args) {
        String baseUrl = "https://demo.guru99.com/test/newtours/";
        System.setProperty("webdriver.gecko.driver", "C:\\geckodriver.exe");
        WebDriver driver = new FirefoxDriver();

        driver.get(baseUrl);
        WebElement link_Home = driver.findElement(By.linkText("Home"));
        WebElement td_Home = driver.findElement(By.xpath(
            "//html/body/div/table/tbody/tr/td"
            + "/table/tbody/tr/td"
            + "/table/tbody/tr/td"
            + "/table/tbody/tr"));

        Actions builder = new Actions(driver);
        Action mouseOverHome = builder.moveToElement(link_Home).build();

        String bgColor = td_Home.getCssValue("background-color");
        System.out.println("Before hover: " + bgColor);
        mouseOverHome.perform();
        bgColor = td_Home.getCssValue("background-color");
        System.out.println("After hover: " + bgColor);
        driver.close();
    }
}

Az alábbi kimenet azt mutatja, hogy a háttérszín átlátszóvá vált az egér fölé húzása után.

Egér fölé mozgatás kimenete

Több akciósorozat felépítése

Az Action és Actions osztályok segítségével akciósorozatokat hozhatsz létre. Ne felejtsd el a sorozatot a következővel lezárni: build() metódus. Tekintsük az alábbi mintakódot.

Több művelet sorozatának felépítése

public static void main(String[] args) {
    String baseUrl = "https://www.facebook.com/";
    WebDriver driver = new FirefoxDriver();

    driver.get(baseUrl);
    WebElement txtUsername = driver.findElement(By.id("email"));

    Actions builder = new Actions(driver);
    Action seriesOfActions = builder
        .moveToElement(txtUsername)
        .click()
        .keyDown(txtUsername, Keys.SHIFT)
        .sendKeys(txtUsername, "hello")
        .keyUp(txtUsername, Keys.SHIFT)
        .doubleClick(txtUsername)
        .contextClick()
        .build();

    seriesOfActions.perform();
}

Műveletsorozat kimenete

GYIK

Az Action osztály a billentyűzet- és egérinterakciók Actions osztály segítségével létrehozott, lefordított sorozatát képviseli. Végrehajtása az Advanced User Interactions API-n keresztül történik a következőben: Selenium WebDriver.

Az Actions (többes szám) az olyan interakciók láncolatához használt építő, mint az egérrel való mozgatás és a kattintás. Az Action (egyes szám) a build() által visszaadott lefordított objektum, amelyet a perform()-tal futtatsz.

A build() függvény az összes láncolt interakciót egyetlen összetett műveletté fordítja le. Mindig utoljára, közvetlenül a perform() függvény előtt hívódik meg, így a sorban álló lépések egyetlen sorozatként futnak le.

A perform() függvény végrehajtja a létrehozott műveletet a böngészőn. Enélkül a láncolt interakciók csak várólistára kerülnek, és soha nem kerülnek ténylegesen az oldalra.

Használd a moveToElement(element) metódust egy Actions objektumon, majd hívd meg a build() és a perform() metódusokat. Ez a kurzort az elem közepére mozgatja, és elindítja az esetleges egérrel való mozgatást, például egy legördülő menüt.

Támogatja a clickAndHold, contextClick, doubleClick, dragAndDrop, dragAndDropBy, keyDown, keyUp, moveByOffset, moveToElement, release és sendKeys műveleteket — lefedve a legösszetettebb interakciókat.

A mesterséges intelligencia eszközei önjavító lokátorokat használnak, amelyek alkalmazkodnak az elemek változásához, csökkentve a pontatlan hibákat a hover és drag-and-drop tesztek során. Stabil XPath útvonalakat is javasolnak, és automatikusan intelligens várakozásokat adnak hozzá.

Igen. A mesterséges intelligencia által fejlesztett kódasszisztensek egy egyszerű angol nyelvű forgatókönyvet, például a „vigye az egérmutatót a Kezdőlap fölé, majd kattintson jobb gombbal” működő műveletlánccá alakítanak a build() és a perform() függvényekkel, és robusztus lokátorokat javasolnak.

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