Akční třída v Selenium

⚡ Chytré shrnutí

Akční třída v Selenium Zpracovává pokročilé události klávesnice a myši, jako je najetí myší, přetažení, kliknutí pravým tlačítkem myši a kombinace kláves, prostřednictvím rozhraní Advanced User Interactions API. Tento tutoriál vysvětluje třídy Actions a Action, metody kláves a jak zřetězit více interakcí do jedné sekvence.

  • 🖱️ Hlavní účel: Třída Actions automatizuje složené události myši a klávesnice, které základní click() nedokáže.
  • 🔑 Dvě třídy: Funkce Akce vytvářejí interakci; Funkce Akce ukládá zkompilovanou sekvenci k provedení.
  • 🧱 Sestavit a poté provést: Řetězte metody, dokončete pomocí build() a spusťte pomocí perform().
  • ???? Klíčové metody: moveToElement(), dragAndDrop(), keyDown()/keyUp(), contextClick() a sendKeys().
  • 🤖 Aktivace umělé inteligence: Asistenti s umělou inteligencí generují kód třídy Action a během interakčních testů se samoléčí.

Výstup při najetí myší

Akční třída v Selenium

Akční třída v Selenium je vestavěná funkce pro zpracování událostí klávesnice a myši. Podporuje operace, jako je více kliknutí klávesou Ctrl, přetahování a mnoho dalších. Tyto operace se provádějí pomocí rozhraní API pro pokročilé uživatelské interakce v Selenium WebDriver.

Zvládání událostí klávesnice a myši

Zpracování speciálních událostí klávesnice a myši se provádí pomocí Rozhraní API pro pokročilé uživatelské interakce. Obsahuje Akce a Akce třídy, které jsou potřebné k provedení těchto událostí. Níže jsou uvedeny nejčastěji používané události klávesnice a myši poskytované třídou Actions.

Metoda Description
clickAndHold() Kliknutí (bez uvolnění) na aktuální pozici myši.
contextClick() Provede kontextové kliknutí (kliknutí pravým tlačítkem myši) na aktuální pozici myši.
doubleClick() Provede poklepání na aktuální pozici myši.
dragAndDrop(zdroj, cíl) Klikne a podrží tlačítko myši na zdrojovém prvku, přesune se na cílový prvek a poté uvolní tlačítko myši. Parametry: zdroj (prvek, na který se má kliknout), cíl (prvek, na kterém se má uvolnit).
dragAndDropBy(zdroj, x-posun, y-posun) Klikne a podrží na zdrojovém prvku, posune se o daný offset a poté uvolní. Parametry: zdroj, xOffset (horizontální), yOffset (vertikální).
keyDown(modifikační_klíč) Stiskne modifikační klávesu bez jejího uvolnění, takže pozdější interakce předpokládají, že zůstane stisknutá. Parametr: modifikační klávesa (Keys.ALT, Keys.SHIFT nebo Keys.CONTROL).
keyUp(modifikační_klávesa) Uvolní modifikační klávesu. Parametr: modifikační klávesa (Keys.ALT, Keys.SHIFT nebo Keys.CONTROL).
moveByOffset(x-posun, y-posun) Přesune myš z její aktuální pozice (nebo 0,0) o daný offset. Záporné x se posune doleva; záporné y se posune nahoru.
moveToElement(toElement) Přesune myš do středu elementu. Parametr: element, na který se má přesunout.
uvolnění() Uvolní stisknuté levé tlačítko myši v aktuálním místě.
sendKeys(onElement, charsequence) Odešle elementu řadu klávesových zkratek. Parametry: onElement (obvykle textové pole), charsequence (klávesové zkratky, které se mají odeslat).

V následujícím příkladu použijeme moveToElement() metoda najetí myší na jeden z Mercury Řádky tabulky Tours.

Zpracování událostí klávesnice a myši

Výše uvedená buňka je součástí element. Pokud na něj nenajedete myší, jeho barva je #FFC455 (oranžová). Po najetí myší se barva buňky stane průhlednou a odpovídá pozadí okolní tabulky.

Krok 1) Importujte Akce a Akce třídy.

Import akcí a tříd akcí

Krok 2) Vytvořte instanci nového objektu Actions.

Vytvoření instance objektu Akce

Krok 3) Vytvořte instanci akce pomocí objektu Actions z kroku 2.

Vytvoření instance objektu Action

Zde používáme moveToElement() metoda pro najetí myší na odkaz „Domů“. build() Metoda je vždy volána jako poslední, aby se všechny uvedené akce zkompilovaly do jednoho kroku.

Krok 4) Použití perform() metoda pro spuštění objektu Action navrženého v kroku 3.

Proveďte akci

Níže je uveden kompletní kód WebDriveru, který kontroluje barvu pozadí prvek před a po najetí myší.

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();
    }
}

Níže uvedený výstup ukazuje, že barva pozadí se po najetí myší stala průhlednou.

Výstup při najetí myší

Vytvoření řady vícenásobných akcí

Sérii akcí můžete vytvořit pomocí tříd Action a Actions. Nezapomeňte sérii uzavřít třídou build() metoda. Vezměte si níže uvedený vzorový kód.

Vytvoření série více akcí

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();
}

Výstup série akcí

Nejčastější dotazy

Třída Action představuje kompilovanou sekvenci interakcí klávesnice a myši vytvořenou pomocí třídy Actions. Je prováděna prostřednictvím rozhraní API pro pokročilé uživatelské interakce v Selenium WebDriver.

Actions (množné číslo) je builder používaný k řetězení interakcí, jako je najetí myší a kliknutí. Action (jednotné číslo) je kompilovaný objekt vrácený funkcí build(), který spouštíte pomocí perform().

build() zkompiluje všechny zřetězené interakce do jedné složené akce. Vždy se volá jako poslední, těsně před perform(), takže kroky ve frontě se provedou společně jako jedna sekvence.

perform() provede v prohlížeči sestavenou akci Action. Bez ní se zřetězené interakce pouze zařadí do fronty a nikdy se skutečně neodešlou na stránku.

Použijte moveToElement(element) na objektu Actions a poté zavolejte build() a perform(). Tím se kurzor přesune do středu elementu a spustí se jakékoli chování při najetí myší, například rozbalovací nabídka.

Podporuje clickAndHold, contextClick, doubleClick, dragAndDrop, dragAndDropBy, keyDown, keyUp, moveByOffset, moveToElement, release a sendKeys – pokrývá tak nejpokročilejší interakce.

Nástroje umělé inteligence používají samoopravitelné lokátory, které se přizpůsobí změně prvků, čímž snižují počet nestabilních selhání v testech s najetím myší a přetažením. Doporučují také stabilní XPath a automaticky přidávají inteligentní čekání.

Ano. Asistenti s AI kódem promění jednoduchý scénář, jako například „najeďte myší na Domů a poté klikněte pravým tlačítkem myši“, ve funkční řetězec akcí pomocí funkcí build() a perform() a navrhnou robustní lokátory.

Shrňte tento příspěvek takto: