Action Class in Selenium

⚡ Smart oppsummering

Action Class in Selenium håndterer avanserte tastatur- og musehendelser som svevebevegelse, dra-og-slipp, høyreklikk og tastekombinasjoner gjennom Advanced User Interactions API. Denne veiledningen forklarer Actions- og Action-klassene, nøkkelmetodene og hvordan du kjeder flere interaksjoner til én sekvens.

  • 🖱️ Kjerneformål: Actions-klassen automatiserer sammensatte mus- og tastaturhendelser som det grunnleggende click() ikke kan.
  • 🔑 To klasser: Handlinger bygger interaksjonen; Handling lagrer den kompilerte sekvensen for utførelse.
  • 🧱 Bygg og utfør: Kjedemetoder, avslutt med build(), og kjør med perform().
  • ???? Nøkkelmetoder: moveToElement(), dragAndDrop(), keyDown()/keyUp(), contextClick() og sendKeys().
  • 🤖 AI-aktivering: AI-assistenter genererer handlingsklassekode og selvreparerende lokatorer under interaksjonstester.

Musepeker-over-utdata

Action Class in Selenium

Action Class in Selenium er en innebygd funksjon for håndtering av tastatur- og musehendelser. Den støtter operasjoner som flere klikk med Ctrl-tasten, dra-og-slipp og mye mer. Disse operasjonene utføres ved hjelp av Advanced User Interactions API i Selenium WebDriver.

Håndtering av tastatur- og mushendelser

Håndtering av spesielle tastatur- og musehendelser gjøres ved hjelp av Advanced User Interactions API. Den inneholder handlinger og Handling klasser som trengs for å utføre disse hendelsene. De vanligste tastatur- og musehendelsene som tilbys av Actions-klassen er listet opp nedenfor.

Metode Tekniske beskrivelser
clickAndHold() Klikker (uten å slippe) på gjeldende museplassering.
contextClick() Utfører et kontekstklikk (høyreklikk) på gjeldende museposisjon.
doubleClick() Utfører et dobbeltklikk på gjeldende museplassering.
dragAndDrop(kilde, mål) Klikk og hold inne på kildeelementet, flytter til målelementet og slipper deretter musen. Parametre: kilde (elementet du skal trykke på), mål (elementet du skal slippe).
dragAndDropBy(kilde, x-offset, y-offset) Klikk og hold inne på kildeelementet, flytter seg med en gitt forskyvning, og slipper deretter. Parametre: kilde, xOffset (horisontal), yOffset (vertikal).
keyDown(modifier_key) Trykker på en spesialtast uten å slippe den, slik at senere interaksjoner antar at den forblir nede. Parameter: en spesialtast (Keys.ALT, Keys.SHIFT eller Keys.CONTROL).
keyUp(modifikator_nøkkel) Slipper en spesialtast. Parameter: en spesialtast (Keys.ALT, Keys.SHIFT eller Keys.CONTROL).
moveByOffset(x-offset, y-offset) Flytter musen fra sin nåværende posisjon (eller 0,0) med den gitte forskyvningen. En negativ x flyttes til venstre; en negativ y flyttes opp.
moveToElement(toElement) Flytter musen til midten av elementet. Parameter: elementet som skal flyttes til.
utgivelse() Slipper den nedtrykte venstre museknappen på gjeldende plassering.
sendKeys(onElement, charsequence) Sender en serie tastetrykk til et element. Parametre: onElement (vanligvis et tekstfelt), charsequence (tastetrykkene som skal sendes).

I det følgende eksemplet bruker vi moveToElement() metode for å holde musepekeren over en av Mercury Omvisninger i tabellrader.

Håndtering av tastatur- og mushendelser

Cellen vist ovenfor er en del av en element. Når den ikke holdes over, er fargen #FFC455 (oransje). Etter at du har holdt musepekeren over cellen, blir fargen gjennomsiktig og matcher bakgrunnen i den omkringliggende tabellen.

Trinn 1) Importer handlinger og Handling klasser.

Importer handlinger og handlingsklasser

Trinn 2) Instantier et nytt Actions-objekt.

Instantier Actions-objekt

Trinn 3) Instantier en handling ved hjelp av handlingsobjektet fra trinn 2.

Instansier handlingsobjekt

Her bruker vi moveToElement() metode for å holde musepekeren over «Hjem»-lenken. build() Metoden kalles alltid sist, slik at alle listede handlinger kompileres til ett enkelt trinn.

Trinn 4) Bruke perform() metode for å utføre handlingsobjektet som ble designet i trinn 3.

Utfør handlingen

Nedenfor er den fullstendige WebDriver-koden som sjekker bakgrunnsfargen til element før og etter at 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();
    }
}

Resultatet nedenfor viser at bakgrunnsfargen ble gjennomsiktig etter at musepekeren ble holdt over den.

Musepeker-over-utdata

Bygge en serie med flere handlinger

Du kan bygge en serie med handlinger ved hjelp av klassene Handling og Handlinger. Husk å avslutte serien med build() metode. Vurder eksempelkoden nedenfor.

Å bygge en serie med 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 med handlinger som utgang

Spørsmål og svar

Action-klassen representerer en kompilert sekvens av tastatur- og museinteraksjoner bygget med Actions-klassen. Den kjøres gjennom Advanced User Interactions API i Selenium WebDriver.

Handlinger (flertall) er byggeren som brukes til å kjede interaksjoner som å sette musepekeren over og klikke. Handling (entall) er det kompilerte objektet som returneres av build() som du kjører med perform().

build() kompilerer alle de kjedede interaksjonene til én sammensatt handling. Den kalles alltid last, rett før perform(), slik at trinnene i køen kjøres sammen som én sekvens.

perform() utfører den innebygde handlingen mot nettleseren. Uten den blir de kjedede interaksjonene bare satt i kø og aldri sendt til siden.

Bruk moveToElement(element) på et Actions-objekt, og kall deretter build() og perform(). Dette flytter markøren til elementets sentrum og utløser eventuell svevefunksjon, for eksempel en rullegardinmeny.

Den støtter clickAndHold, contextClick, doubleClick, dragAndDrop, dragAndDropBy, keyDown, keyUp, moveByOffset, moveToElement, release og sendKeys – og dekker de fleste avanserte interaksjoner.

AI-verktøy bruker selvreparerende lokaliseringsverktøy som tilpasser seg når elementer endres, noe som reduserer ustabile feil i sveve- og dra-og-slipp-tester. De anbefaler også stabile XPaths og legger til smarte ventetider automatisk.

Ja. AI-kodeassistenter gjør et enkelt engelsk scenario som «hold musepekeren over Hjem og høyreklikk» om til en fungerende handlingskjede med build() og perform(), og foreslår robuste lokatorer.

Oppsummer dette innlegget med: