Klasa akcji w Selenium

โšก Inteligentne podsumowanie

Klasa akcji w Selenium Obsล‚uguje zaawansowane zdarzenia klawiatury i myszy, takie jak najechanie kursorem, przeciฤ…ganie i upuszczanie, klikniฤ™cie prawym przyciskiem myszy i kombinacje klawiszy, za poล›rednictwem interfejsu API zaawansowanych interakcji uลผytkownika (Advanced User Interactions). W tym samouczku wyjaล›niono klasy Actions i Actions, metody klawiszowe oraz sposรณb ล‚ฤ…czenia wielu interakcji w jednฤ… sekwencjฤ™.

  • ๐Ÿ–ฑ๏ธ. Gล‚รณwny cel: Klasa Actions automatyzuje zล‚oลผone zdarzenia myszy i klawiatury, ktรณrych nie moลผna wykonaฤ‡ za pomocฤ… podstawowej metody click().
  • ๐Ÿ”‘ Dwie klasy: Akcje budujฤ… interakcjฤ™; Akcja przechowuje skompilowanฤ… sekwencjฤ™ do wykonania.
  • ๐Ÿงฑ Zbuduj, a nastฤ™pnie wykonaj: Metody ล‚aล„cuchowe, zakoล„cz za pomocฤ… build() i uruchom za pomocฤ… perform().
  • ๐Ÿ“‹ Kluczowe metody: moveToElement(), dragAndDrop(), keyDown()/keyUp(), contextClick() i sendKeys().
  • ๐Ÿค– Wล‚ฤ…czanie sztucznej inteligencji: Asystenci AI generujฤ… kod klasy akcji i samodzielnie naprawiajฤ… lokalizatory podczas testรณw interakcji.

Wynik najechania myszkฤ…

Klasa akcji w Selenium

Klasa akcji w Selenium to wbudowana funkcja do obsล‚ugi zdarzeล„ klawiatury i myszy. Obsล‚uguje operacje takie jak wielokrotne klikniฤ™cia klawiszem Control, przeciฤ…ganie i upuszczanie i wiele innych. Operacje te sฤ… wykonywane za pomocฤ… interfejsu API zaawansowanych interakcji uลผytkownika. Selenium Sterownik sieciowy.

Obsล‚uga zdarzeล„ klawiatury i myszy

Obsล‚uga specjalnych zdarzeล„ klawiatury i myszy odbywa siฤ™ za pomocฤ… Zaawansowane API interakcji uลผytkownika. Zawiera Akcje oraz Dziaล‚ania Klasy niezbฤ™dne do wykonania tych zdarzeล„. Poniลผej wymieniono najczฤ™ล›ciej uลผywane zdarzenia klawiatury i myszy udostฤ™pniane przez klasฤ™ Actions.

Metoda wykonania OPIS
Kliknij i przytrzymaj() Klikniฤ™cia (bez zwalniania) w bieลผฤ…cym poล‚oลผeniu myszy.
kontekstKlikniฤ™cie() Wykonuje klikniฤ™cie kontekstowe (prawym przyciskiem myszy) w bieลผฤ…cym poล‚oลผeniu myszy.
podwรณjne klikniฤ™cie() Wykonuje dwukrotne klikniฤ™cie w bieลผฤ…cym poล‚oลผeniu myszy.
dragAndDrop(ลบrรณdล‚o, cel) Kliknij i przytrzymaj element ลบrรณdล‚owy, przesuล„ do elementu docelowego, a nastฤ™pnie zwolnij przycisk myszy. Parametry: ลบrรณdล‚o (element, ktรณry chcesz nacisnฤ…ฤ‡), cel (element, ktรณry chcesz zwolniฤ‡).
dragAndDropBy(ลบrรณdล‚o, przesuniฤ™cie x, przesuniฤ™cie y) Kliknij i przytrzymaj element ลบrรณdล‚owy, przesuล„ go o zadane przesuniฤ™cie, a nastฤ™pnie zwolnij. Parametry: ลบrรณdล‚o, przesuniฤ™cie x (poziomo), przesuniฤ™cie y (pionowo).
keyDown(klucz_modyfikatora) Naciska klawisz modyfikujฤ…cy bez puszczania go, wiฤ™c pรณลบniejsze interakcje zakล‚adajฤ…, ลผe klawisz pozostaje wciล›niฤ™ty. Parametr: klawisz modyfikujฤ…cy (Klawisze.ALT, Klawisze.SHIFT lub Klawisze.CONTROL).
keyUp(klucz_modyfikatora) Zwalnia klawisz modyfikujฤ…cy. Parametr: klawisz modyfikujฤ…cy (Klawisze.ALT, Klawisze.SHIFT lub Klawisze.CONTROL).
moveByOffset(przesuniฤ™cie x, przesuniฤ™cie y) Przesuwa mysz od bieลผฤ…cej pozycji (lub 0,0) o zadany przesuniฤ™cie. Ujemny x przesuwa mysz w lewo; ujemny y przesuwa mysz w gรณrฤ™.
przenieล› do elementu (do elementu) Przesuwa mysz do ล›rodka elementu. Parametr: element, do ktรณrego ma zostaฤ‡ przeniesiony.
uwolnienie() Zwalnia wciล›niฤ™ty lewy przycisk myszy w bieลผฤ…cej lokalizacji.
sendKeys(onElement, sekwencja znakรณw) Wysyล‚a seriฤ™ naciล›niฤ™ฤ‡ klawiszy do elementu. Parametry: onElement (zwykle pole tekstowe), sekwencja znakรณw (liczba naciล›niฤ™ฤ‡ klawiszy do wysล‚ania).

W poniลผszym przykล‚adzie uลผywamy moveToElement() metoda najechania kursorem na jeden z Mercury Wiersze tabeli wycieczek.

Obsล‚uga zdarzeล„ klawiatury i myszy

Komรณrka pokazana powyลผej jest czฤ™ล›ciฤ… Element. Gdy nie jest najechany kursorem, jego kolor to #FFC455 (pomaraล„czowy). Po najechaniu kursorem kolor komรณrki staje siฤ™ przezroczysty i pasuje do tล‚a otaczajฤ…cej tabeli.

Krok 1) Importuj Akcje oraz Dziaล‚ania Klasy.

Importuj akcje i klasy akcji

Krok 2) Utwรณrz instancjฤ™ nowego obiektu Actions.

Utwรณrz obiekt akcji

Krok 3) Utwรณrz wystฤ…pienie akcji, uลผywajฤ…c obiektu Akcje z kroku 2.

Utwรณrz obiekt akcji

Tutaj uลผywamy moveToElement() metodฤ™ najechania kursorem na link โ€žStrona gล‚รณwnaโ€. build() Metoda jest zawsze wywoล‚ywana jako ostatnia, dziฤ™ki czemu wszystkie wymienione akcje sฤ… kompilowane w pojedynczym kroku.

Krok 4) Uลผyj perform() metoda wykonania obiektu akcji zaprojektowanego w kroku 3.

Wykonaj akcjฤ™

Poniลผej znajduje siฤ™ peล‚ny kod WebDrivera, ktรณry sprawdza kolor tล‚a element przed i po najechaniu myszkฤ….

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

Poniลผszy wynik pokazuje, ลผe kolor tล‚a staล‚ siฤ™ przezroczysty po najechaniu na niego kursorem myszy.

Wynik najechania myszkฤ…

Budowanie serii wielu dziaล‚aล„

Moลผesz zbudowaฤ‡ seriฤ™ akcji, uลผywajฤ…c klas Action i Actions. Pamiฤ™taj, aby zamknฤ…ฤ‡ seriฤ™ za pomocฤ… build() metoda. Rozwaลผ przykล‚adowy kod poniลผej.

Budowanie serii wielu dziaล‚aล„

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

Seria dziaล‚aล„ wyjล›ciowych

FAQ

Klasa Action reprezentuje skompilowanฤ… sekwencjฤ™ interakcji klawiatury i myszy zbudowanฤ… za pomocฤ… klasy Actions. Jest ona wykonywana za poล›rednictwem interfejsu API Advanced User Interactions w Selenium Sterownik sieciowy.

Akcje (liczba mnoga) to konstruktor uลผywany do ล‚ฤ…czenia interakcji, takich jak najechanie kursorem i klikniฤ™cie. Akcja (liczba pojedyncza) to skompilowany obiekt zwrรณcony przez build(), ktรณry uruchamia siฤ™ za pomocฤ… perform().

Funkcja build() kompiluje wszystkie powiฤ…zane interakcje w jednฤ… akcjฤ™ zล‚oลผonฤ…. Jest zawsze wywoล‚ywana na koล„cu, tuลผ przed perform(), wiฤ™c kroki w kolejce sฤ… wykonywane razem jako jedna sekwencja.

perform() wykonuje zbudowanฤ… akcjฤ™ w przeglฤ…darce. Bez niej powiฤ…zane interakcje sฤ… jedynie kolejkowane i nigdy nie sฤ… wysyล‚ane na stronฤ™.

Uลผyj moveToElement(element) na obiekcie Actions, a nastฤ™pnie wywoล‚aj build() i perform(). Spowoduje to przeniesienie kursora do ล›rodka elementu i uruchomienie dowolnego zachowania po najechaniu kursorem, takiego jak menu rozwijane.

Obsล‚uguje funkcje clickAndHold, contextClick, doubleClick, dragAndDrop, dragAndDropBy, keyDown, keyUp, moveByOffset, moveToElement, release i sendKeys, obejmujฤ…c wiฤ™kszoล›ฤ‡ zaawansowanych interakcji.

Narzฤ™dzia AI wykorzystujฤ… samonaprawiajฤ…ce siฤ™ lokalizatory, ktรณre dostosowujฤ… siฤ™ do zmian elementรณw, redukujฤ…c ryzyko wystฤ…pienia niestabilnych bล‚ฤ™dรณw w testach najechania kursorem myszy i przeciฤ…gania i upuszczania. Rekomendujฤ… rรณwnieลผ stabilne ล›cieลผki XPath i automatycznie dodajฤ… inteligentne oczekiwania.

Tak. Asystenci kodu AI zamieniajฤ… prosty scenariusz, taki jak โ€žnajedลบ kursorem na Home, a nastฤ™pnie kliknij prawym przyciskiem myszyโ€, na dziaล‚ajฤ…cy ล‚aล„cuch akcji z build() i perform(), i sugerujฤ… solidne lokalizatory.

Podsumuj ten post nastฤ™pujฤ…co: