Action Class in Selenium

โšก Smart opsummering

Action Class in Selenium hรฅndterer avancerede tastatur- og musehรฆndelser sรฅsom pegebevรฆgelse, trรฆk-og-slip, hรธjreklik og tastekombinationer via Advanced User Interactions API. Denne vejledning forklarer Actions- og Action-klasserne, nรธglemetoderne og hvordan man kรฆder flere interaktioner sammen i รฉn sekvens.

  • ๐Ÿ–ฑ๏ธ Kerneformรฅl: Actions-klassen automatiserer sammensatte mus- og tastaturhรฆndelser, hvilket den almindelige click() ikke kan.
  • ๐Ÿ”‘ To klasser: Handlinger opbygger interaktionen; Handling gemmer den kompilerede sekvens til udfรธrelse.
  • ๐Ÿงฑ Byg og udfรธr derefter: Kรฆdemetoder, afslut med build(), og kรธr med perform().
  • ???? Nรธglemetoder: moveToElement(), dragAndDrop(), keyDown()/keyUp(), contextClick() og sendKeys().
  • ๐Ÿค– AI-aktivering: AI-assistenter genererer handlingsklassekode og selvreparerende lokatorer under interaktionstests.

Musen over output

Action Class in Selenium

Action Class in Selenium er en indbygget funktion til hรฅndtering af tastatur- og musehรฆndelser. Den understรธtter handlinger som flere klik med Ctrl-tasten, trรฆk-og-slip og meget mere. Disse handlinger udfรธres ved hjรฆlp af Advanced User Interactions API i Selenium WebDriver.

Hรฅndtering af tastatur- og musevents

Hรฅndtering af sรฆrlige tastatur- og musehรฆndelser udfรธres ved hjรฆlp af Advanced User Interactions API. Den indeholder handlinger og Handling klasser, der er nรธdvendige for at udfรธre disse begivenheder. De mest almindeligt anvendte tastatur- og musebegivenheder, der leveres af Actions-klassen, er anfรธrt nedenfor.

Metode Beskrivelse
clickAndHold() Klik (uden at slippe) pรฅ den aktuelle museplacering.
kontekstKlik() Udfรธrer et kontekstklik (hรธjreklik) pรฅ den aktuelle museplacering.
dobbeltklik() Udfรธrer et dobbeltklik pรฅ den aktuelle museplacering.
dragAndDrop(kilde, mรฅl) Klik og hold nede pรฅ kildeelementet, flytter til mรฅlelementet og slipper derefter musen. Parametre: kilde (element at trykke pรฅ), mรฅl (element at slippe).
dragAndDropBy(kilde, x-offset, y-offset) Klik og hold pรฅ kildeelementet, flytter med en given forskydning og slipper derefter. Parametre: kilde, xOffset (vandret), yOffset (lodret).
keyDown(modifier_key) Trykker pรฅ en รฆndringstast uden at slippe den, sรฅ senere interaktioner antager, at den forbliver nede. Parameter: en รฆndringstast (Keys.ALT, Keys.SHIFT eller Keys.CONTROL).
keyUp(modifikator_nรธgle) Slipper en รฆndringstast. Parameter: en รฆndringstast (Keys.ALT, Keys.SHIFT eller Keys.CONTROL).
moveByOffset(x-offset, y-offset) Flytter musen fra dens nuvรฆrende position (eller 0,0) med den givne forskydning. Et negativt x flytter til venstre; et negativt y flytter op.
moveToElement(toElement) Flytter musen til midten af โ€‹โ€‹elementet. Parameter: det element, der skal flyttes til.
frigรธre() Slipper den nedtrykkede venstre museknap pรฅ den aktuelle placering.
sendKeys(onElement, charsequence) Sender en rรฆkke tastetryk til et element. Parametre: onElement (normalt et tekstfelt), charsequence (de tastetryk, der skal sendes).

I det fรธlgende eksempel bruger vi moveToElement() metode til at holde musen over en af Mercury Rundvisninger i tabellerรฆkker.

Hรฅndtering af tastatur- og musehรฆndelser

Cellen vist ovenfor er en del af en element. Nรฅr musen ikke holdes over det, er farven #FFC455 (orange). Nรฅr musen holdes over det, bliver cellens farve gennemsigtig og matcher baggrunden i den omgivende tabel.

Trin 1) Importer handlinger og Handling klasser.

Importรฉr handlinger og handlingsklasser

Trin 2) Instantiรฉr et nyt Actions-objekt.

Instantier Actions-objekt

Trin 3) Instantier en handling ved hjรฆlp af Actions-objektet fra trin 2.

Instantier handlingsobjekt

Her bruger vi moveToElement() metode til at holde musen over linket "Hjem". build() Metoden kaldes altid sidst, sรฅ alle anfรธrte handlinger kompileres til et enkelt trin.

Trin 4) Brug perform() metode til at udfรธre det handlingsobjekt, der er designet i trin 3.

Udfรธr handlingen

Nedenfor er den fulde WebDriver-kode, der kontrollerer baggrundsfarven pรฅ element fรธr og efter musen holdes over.

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

Outputtet nedenfor viser, at baggrundsfarven blev gennemsigtig efter musen blev holdt over den.

Musen over output

Opbygning af en rรฆkke af flere handlinger

Du kan opbygge en serie af handlinger ved hjรฆlp af klasserne Handling og Handlinger. Husk at afslutte serien med build() metode. Overvej eksempelkoden nedenfor.

Opbygning af en serie af flere handlinger

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

Serie af handlinger output

Ofte Stillede Spรธrgsmรฅl

Action-klassen reprรฆsenterer en kompileret sekvens af tastatur- og musinteraktioner bygget med Actions-klassen. Den udfรธres via Advanced User Interactions API i Selenium WebDriver.

Actions (flertal) er den builder, der bruges til at kรฆde interaktioner som musepeker og klik sammen. Action (ental) er det kompilerede objekt, der returneres af build(), som du kรธrer med perform().

build() kompilerer alle de sammenkรฆdede interaktioner til en enkelt sammensat handling. Den kaldes altid last, lige fรธr perform(), sรฅ de kรธindede trin udfรธres sammen som รฉn sekvens.

perform() udfรธrer den indbyggede handling mod browseren. Uden den sรฆttes de kรฆdede interaktioner kun i kรธ og sendes aldrig til siden.

Brug moveToElement(element) pรฅ et Actions-objekt, og kald derefter build() og perform(). Dette flytter markรธren til elementets centrum og udlรธser enhver svรฆveadfรฆrd, f.eks. en rullemenu.

Den understรธtter clickAndHold, contextClick, doubleClick, dragAndDrop, dragAndDropBy, keyDown, keyUp, moveByOffset, moveToElement, release og sendKeys โ€” og dรฆkker de fleste avancerede interaktioner.

AI-vรฆrktรธjer bruger selvreparerende lokaliseringsvรฆrktรธjer, der tilpasser sig, nรฅr elementer รฆndrer sig, hvilket reducerer ustabile fejl i hover- og trรฆk-og-slip-tests. De anbefaler ogsรฅ stabile XPaths og tilfรธjer automatisk smart waits.

Ja. AI-kodeassistenter forvandler et letforstรฅeligt scenarie som "hold musen over Home og hรธjreklik derefter" til en fungerende handlingskรฆde med build() og perform() og foreslรฅr robuste lokatorer.

Opsummer dette indlรฆg med: