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: