Action Class in Selenium

โšก Smart sammanfattning

Action Class in Selenium hanterar avancerade tangentbords- och mushรคndelser som muspekning, dra-och-slรคpp, hรถgerklick och tangentkombinationer via Advanced User Interactions API. Den hรคr handledningen fรถrklarar klasserna Actions och Action, nyckelmetoderna och hur man lรคnkar flera interaktioner till en sekvens.

  • ๐Ÿ–ฑ๏ธ Kรคrnsyfte: Klassen Actions automatiserar sammansatta mus- och tangentbordshรคndelser som den grundlรคggande click() inte kan.
  • ๐Ÿ”‘ Tvรฅ klasser: Actions bygger interaktionen; Action lagrar den kompilerade sekvensen fรถr att kรถra.
  • ๐Ÿงฑ Bygg sedan utfรถr: Kedjemetoder, avsluta med build() och kรถr med perform().
  • ๐Ÿ“‹ Viktiga metoder: moveToElement(), dragAndDrop(), keyDown()/keyUp(), contextClick() och sendKeys().
  • ๐Ÿค– AI-aktivering: AI-assistenter genererar รฅtgรคrdsklasskod och sjรคlvlรคkande lokaliseringsverktyg under interaktionstester.

Muspekarรถver-utdata

Action Class in Selenium

Action Class in Selenium รคr en inbyggd funktion fรถr att hantera tangentbords- och mushรคndelser. Den stรถder รฅtgรคrder som flera klick med Ctrl-tangenten, dra-och-slรคpp och mycket mer. Dessa รฅtgรคrder utfรถrs med hjรคlp av Advanced User Interactions API i Selenium WebDriver.

Hantera evenemang med tangentbord och mus

Hantering av speciella tangentbords- och mushรคndelser gรถrs med hjรคlp av Advanced User Interactions API. Den innehรฅller Actions och Handling klasser som behรถvs fรถr att kรถra dessa hรคndelser. De vanligaste tangentbords- och mushรคndelserna som tillhandahรฅlls av Actions-klassen listas nedan.

Metod BESKRIVNING
Klicka och hรฅll() Klickar (utan att slรคppa) pรฅ den aktuella musplatsen.
contextClick() Utfรถr ett kontextklick (hรถgerklick) pรฅ den aktuella muspositionen.
doubleClick() Utfรถr ett dubbelklick pรฅ den aktuella musplatsen.
dragAndDrop(kรคlla, mรฅl) Klickar och hรฅller kvar pรฅ kรคllelementet, flyttar till mรฅlelementet och slรคpper sedan musen. Parametrar: kรคlla (element att trycka pรฅ), mรฅl (element att slรคppa).
dragAndDropBy(kรคlla, x-offset, y-offset) Klickar och hรฅller kvar pรฅ kรคllelementet, flyttar med en given fรถrskjutning och slรคpper sedan. Parametrar: kรคlla, xOffset (horisontell), yOffset (vertikal).
keyDown(modifier_key) Trycker ner en modifieringstangent utan att slรคppa den, sรฅ senare interaktioner fรถrutsรคtter att den fรถrblir nedtryckt. Parameter: en modifieringstangent (Keys.ALT, Keys.SHIFT eller Keys.CONTROL).
keyUp(modifieringsnyckel) Slรคpper en specialtangent. Parameter: en specialtangent (Keys.ALT, Keys.SHIFT eller Keys.CONTROL).
moveByOffset(x-offset, y-offset) Flyttar musen frรฅn dess nuvarande position (eller 0,0) med den givna fรถrskjutningen. Ett negativt x flyttas รฅt vรคnster; ett negativt y flyttas uppรฅt.
moveToElement(toElement) Flyttar musen till mitten av elementet. Parameter: elementet som ska flyttas till.
slรคpp() Slรคpper den nedtryckta vรคnstra musknappen pรฅ den aktuella platsen.
sendKeys(onElement, charsequence) Skickar en serie tangenttryckningar till ett element. Parametrar: onElement (vanligtvis ett textfรคlt), charsequence (tangenttryckningarna som ska skickas).

I fรถljande exempel anvรคnder vi moveToElement() metod fรถr att hรฅlla muspekaren รถver en av Mercury Rundvisningar i tabellrader.

Hantera tangentbords- och mushรคndelser

Cellen som visas ovan รคr en del av en element. Nรคr hovraren inte hรฅlls รถver cellen รคr dess fรคrg #FFC455 (orange). Efter att hovraren hรฅllits รถver den blir cellens fรคrg transparent och matchar bakgrunden i den omgivande tabellen.

Steg 1) Importera Actions och Handling klasser.

Importera รฅtgรคrder och รฅtgรคrdsklasser

Steg 2) Instantiera ett nytt Actions-objekt.

Instansiera Actions-objekt

Steg 3) Instansiera en รฅtgรคrd med hjรคlp av Actions-objektet frรฅn steg 2.

Instansiera รฅtgรคrdsobjekt

Hรคr anvรคnder vi moveToElement() metod fรถr att hรฅlla muspekaren รถver lรคnken "Hem". build() Metoden anropas alltid sist sรฅ att alla listade รฅtgรคrder kompileras till ett enda steg.

Steg 4) Anvรคnd perform() metod fรถr att exekvera Action-objektet som designades i steg 3.

Utfรถr รฅtgรคrden

Nedan finns den fullstรคndiga WebDriver-koden som kontrollerar bakgrundsfรคrgen pรฅ element fรถre och efter muspekaren.

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

Utdata nedan visar att bakgrundsfรคrgen blev transparent efter att muspekaren fรถrdes รถver den.

Muspekarรถver-utdata

Bygga en serie av flera รฅtgรคrder

Du kan bygga en serie รฅtgรคrder med hjรคlp av klasserna ร…tgรคrd och ร…tgรคrder. Kom ihรฅg att avsluta serien med build() metod. Betrakta exempelkoden nedan.

Bygga en serie av flera handlingar

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 av handlingar som utmatas

Vanliga frรฅgor

Klassen Action representerar en kompilerad sekvens av tangentbords- och musinteraktioner byggda med klassen Actions. Den kรถrs via Advanced User Interactions API i Selenium WebDriver.

Actions (plural) รคr den verktygsbyggare som anvรคnds fรถr att kedja interaktioner som att hovra รถver och klicka. Action (singular) รคr det kompilerade objektet som returneras av build() och som du kรถr med perform().

build() kompilerar alla lรคnkade interaktioner till en enda sammansatt รฅtgรคrd. Den anropas alltid last, precis fรถre perform(), sรฅ de kรถade stegen kรถrs tillsammans som en sekvens.

perform() kรถr den inbyggda รฅtgรคrden mot webblรคsaren. Utan den kรถas de lรคnkade interaktionerna bara och skickas aldrig till sidan.

Anvรคnd moveToElement(element) pรฅ ett Actions-objekt och anropa sedan build() och perform(). Detta flyttar markรถren till elementets mitt och utlรถser eventuella hovringsbeteenden, till exempel en rullgardinsmeny.

Den stรถder clickAndHold, contextClick, doubleClick, dragAndDrop, dragAndDropBy, keyDown, keyUp, moveByOffset, moveToElement, release och sendKeys โ€” och tรคcker de flesta avancerade interaktioner.

AI-verktyg anvรคnder sjรคlvlรคkande positionerare som anpassar sig nรคr element รคndras, vilket minskar ojรคmna fel i hovrings- och dra-och-slรคpp-tester. De rekommenderar ocksรฅ stabila XPaths och lรคgger till smarta vรคntetider automatiskt.

Ja. AI-kodassistenter fรถrvandlar ett enkelt engelskt scenario som "hรฅll muspekaren รถver Home och hรถgerklicka sedan" till en fungerande รฅtgรคrdskedja med build() och perform(), och fรถreslรฅr robusta positionerare.

Sammanfatta detta inlรคgg med: