Akcija Klasa u Selenium

โšก Pametni saลพetak

Akcija Klasa u Selenium Obraฤ‘uje napredne dogaฤ‘aje tipkovnice i miลกa kao ลกto su zadrลพavanje pokazivaฤa miลกa, povlaฤenje i ispuลกtanje, klik desnom tipkom miลกa i kombinacije tipki putem API-ja za napredne korisniฤke interakcije. Ovaj vodiฤ objaลกnjava klase Akcije i Akcije, metode tipki i kako povezati viลกe interakcija u jedan niz.

  • ๐Ÿ–ฑ๏ธ Osnovna svrha: Klasa Actions automatizira sloลพene dogaฤ‘aje miลกa i tipkovnice koje osnovni click() ne moลพe.
  • ๐Ÿ”‘ Dva razreda: Akcije grade interakciju; Akcije pohranjuju kompilirani niz za izvrลกavanje.
  • ๐Ÿงฑ Izgradi, a zatim izvrลกi: Lanฤaj metode, zavrลกi s build() i pokreni s perform().
  • ๐Ÿ“‹ Kljuฤne metode: premjestiUElement(), povuciIIspusti(), PritisniSeKljuฤ()/PritisniSeKljuฤ(), contextClick() i sendKeys().
  • ๐Ÿค– Omoguฤ‡avanje umjetne inteligencije: AI asistenti generiraju kod klase Action i samoizljeฤavaju lokatore tijekom testova interakcije.

Izlaz preko miลกa

Akcija Klasa u Selenium

Akcija Klasa u Selenium je ugraฤ‘ena znaฤajka za rukovanje dogaฤ‘ajima tipkovnice i miลกa. Podrลพava operacije kao ลกto su viลกestruki klikovi tipkom Control, povlaฤenje i ispuลกtanje i mnoge druge. Ove se operacije izvode pomoฤ‡u API-ja za napredne korisniฤke interakcije u Selenium WebDriver.

Rukovanje dogaฤ‘ajima tipkovnice i miลกa

Obrada posebnih dogaฤ‘aja tipkovnice i miลกa vrลกi se pomoฤ‡u API za napredne korisniฤke interakcije, Sadrลพi Akcije i Akcijski klase koje su potrebne za izvrลกavanje ovih dogaฤ‘aja. Najฤeลกฤ‡e koriลกteni dogaฤ‘aji tipkovnice i miลกa koje pruลพa klasa Actions navedeni su u nastavku.

naฤin Description
klikni i zadrลพi() Klikne (bez otpuลกtanja) na trenutnoj lokaciji miลกa.
contextClick() Izvodi kontekstni klik (desni klik) na trenutnoj lokaciji miลกa.
dvostruki klik() Izvodi dvostruki klik na trenutnoj lokaciji miลกa.
dragAndDrop(izvor, cilj) Klikne i drลพi miลก na izvornom elementu, pomiฤe se na ciljni element, a zatim otpuลกta miลก. Parametri: izvor (element na koji treba pritisnuti), cilj (element na koji treba otpustiti).
dragAndDropBy(izvor, x-pomak, y-pomak) Klikne i drลพi na izvornom elementu, pomiฤe se za zadani pomak, a zatim otpuลกta. Parametri: izvor, xPomak (horizontalno), yPomak (vertikalno).
tipkadolje(tipka_modifikatora) Pritiลกฤ‡e modifikatorsku tipku bez otpuลกtanja, pa kasnije interakcije pretpostavljaju da ostaje pritisnuta. Parametar: modifikatorska tipka (Keys.ALT, Keys.SHIFT ili Keys.CONTROL).
keyUp(modifikatorska_tipka) Otpuลกta modifikatorsku tipku. Parametar: modifikatorska tipka (Keys.ALT, Keys.SHIFT ili Keys.CONTROL).
moveByOffset(x-pomak, y-pomak) Pomiฤe miลก s njegove trenutne pozicije (ili 0,0) za zadani pomak. Negativni x pomiฤe se lijevo; negativni y pomiฤe se gore.
pomakni na element (na element) Pomiฤe miลก na sredinu elementa. Parametar: element na koji se pomiฤe.
oslobodi() Otpuลกta pritisnutu lijevu tipku miลกa na trenutnoj lokaciji.
sendKeys(onElement, charsequence) ล alje niz pritisaka tipki elementu. Parametri: onElement (obiฤno tekstualno polje), charsequence (pritisci tipki koje treba poslati).

U sljedeฤ‡em primjeru koristimo moveToElement() metoda zadrลพavanja pokazivaฤa iznad jednog od Mercury Redovi tablice Tours.

Obrada dogaฤ‘aja tipkovnice i miลกa

ฤ†elija prikazana gore je dio element. Kada se ne zadrลพi miลก iznad njega, njegova boja je #FFC455 (naranฤasta). Nakon zadrลพavanja miลกa, boja ฤ‡elije postaje prozirna i odgovara pozadini okolne tablice.

Korak 1) Uvezite Akcije i Akcijski klase.

Uvoz akcija i klasa akcija

Korak 2) Instancirajte novi objekt Actions.

Objekt Instanciranje Radnji

Korak 3) Instancirajte Action koristeฤ‡i objekt Actions iz 2. koraka.

Instanciranje objekta Action

Ovdje koristimo moveToElement() metoda zadrลพavanja pokazivaฤa iznad poveznice "Poฤetna". build() Metoda se uvijek poziva zadnja kako bi se sve navedene akcije sastavile u jedan korak.

Korak 4) Koristite perform() metoda za izvrลกavanje objekta Action dizajniranog u koraku 3.

Izvrลกite radnju

Ispod je cijeli WebDriver kod koji provjerava boju pozadine element prije i poslije prelaska miลกem preko njega.

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

Donji rezultat pokazuje da je boja pozadine postala prozirna nakon prelaska miลกem preko nje.

Izlaz preko miลกa

Izgradnja niza viลกestrukih radnji

Moลพete izgraditi niz akcija pomoฤ‡u klasa Action i Actions. Ne zaboravite zatvoriti niz s build() metoda. Razmotrite primjer koda u nastavku.

Izgradnja niza viลกestrukih akcija

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

Izlaz niza akcija

Pitanja i odgovori

Klasa Action predstavlja kompilirani niz interakcija tipkovnicom i miลกem izgraฤ‘en pomoฤ‡u klase Actions. Izvrลกava se putem API-ja za napredne korisniฤke interakcije u Selenium WebDriver.

Akcije (mnoลพina) su alat za izradu koji se koristi za lanฤanje interakcija poput zadrลพavanja pokazivaฤa miลกa i klika. Akcija (jednina) je kompilirani objekt koji vraฤ‡a build() i koji pokreฤ‡ete s perform().

build() kompilira sve povezane interakcije u jednu sloลพenu Action. Uvijek se poziva last, neposredno prije perform(), tako da se koraci u redu ฤekanja izvrลกavaju zajedno kao jedan niz.

perform() izvrลกava izgraฤ‘enu Action u pregledniku. Bez njega, ulanฤane interakcije se samo stavljaju u red ฤekanja i nikada se zapravo ne ลกalju na stranicu.

Koristite moveToElement(element) na objektu Actions, a zatim pozovite build() i perform(). To pomiฤe kursor u srediลกte elementa i pokreฤ‡e bilo koje ponaลกanje prilikom zadrลพavanja kursora, poput padajuฤ‡eg izbornika.

Podrลพava clickAndHold, contextClick, doubleClick, dragAndDrop, dragAndDropBy, keyDown, keyUp, moveByOffset, moveToElement, release i sendKeys โ€” pokrivajuฤ‡i veฤ‡inu naprednih interakcija.

Alati umjetne inteligencije koriste lokatore s moguฤ‡noลกฤ‡u samoobnavljanja koji se prilagoฤ‘avaju promjeni elemenata, smanjujuฤ‡i nestabilne kvarove u testovima zadrลพavanja miลกa i povlaฤenja i ispuลกtanja. Takoฤ‘er preporuฤuju stabilne XPathove i automatski dodaju pametna ฤekanja.

Da. AI kodni asistenti pretvaraju scenarij na engleskom jeziku poput "zadrลพite pokazivaฤ iznad poฤetne stranice, a zatim kliknite desnom tipkom miลกa" u funkcionalni lanac akcija pomoฤ‡u build() i perform() te predlaลพu robusne lokatore.

Saลพmite ovu objavu uz: