Classe d'azione dentro Selenium

โšก Riepilogo intelligente

Classe d'azione dentro Selenium Gestisce eventi avanzati da tastiera e mouse come il passaggio del mouse, il trascinamento, il clic destro e le combinazioni di tasti tramite l'API Advanced User Interactions. Questa esercitazione spiega le classi Actions e Action, i metodi principali e come concatenare piรน interazioni in un'unica sequenza.

  • ๐Ÿ–ฑ๏ธ Scopo principale: La classe Actions automatizza gli eventi composti del mouse e della tastiera che il semplice click() non รจ in grado di gestire.
  • ๐Ÿ”‘ Due classi: Actions crea l'interazione; Action memorizza la sequenza compilata da eseguire.
  • ๐Ÿงฑ Costruisci e poi esegui: Concatena i metodi, termina con build() ed esegui con perform().
  • ๐Ÿ“‹ Metodi chiave: moveToElement(), dragAndDrop(), keyDown()/keyUp(), contextClick() e sendKeys().
  • ๐Ÿค– Abilitazione dell'IA: Gli assistenti IA generano codice di classe Action e localizzatori di auto-riparazione durante i test di interazione.

output al passaggio del mouse

Classe d'azione dentro Selenium

Classe d'azione dentro Selenium รจ una funzionalitร  integrata per la gestione degli eventi di tastiera e mouse. Supporta operazioni come clic multipli con il tasto Control, trascinamento e rilascio e molte altre. Queste operazioni vengono eseguite utilizzando l'API Advanced User Interactions in Selenium WebDriver.

Gestione degli eventi di tastiera e mouse

La gestione degli eventi speciali della tastiera e del mouse viene effettuata tramite API di interazioni utente avanzate. Contiene il file Azione e Action classi necessarie per eseguire questi eventi. Gli eventi di tastiera e mouse piรน comunemente utilizzati, forniti dalla classe Actions, sono elencati di seguito.

Metodo Descrizione
fare clic su e tenere premuto() Clic (senza rilasciare) nella posizione corrente del mouse.
contestoClick() Esegue un clic contestuale (clic destro) nella posizione corrente del mouse.
doppio clic() Esegue un doppio clic nella posizione corrente del mouse.
dragAndDrop(sorgente, destinazione) Clicca e tieni premuto sull'elemento sorgente, spostati sull'elemento di destinazione, quindi rilascia il mouse. Parametri: sorgente (elemento su cui premere), destinazione (elemento su cui rilasciare).
dragAndDropBy(sorgente, offset x, offset y) Tenendo premuto sull'elemento sorgente, si sposta di un offset specificato e poi rilascia. Parametri: sorgente, xOffset (orizzontale), yOffset (verticale).
tastoGiรน(tasto_modificatore) Premendo un tasto modificatore senza rilasciarlo, le interazioni successive presuppongono che rimanga premuto. Parametro: un tasto modificatore (Keys.ALT, Keys.SHIFT o Keys.CONTROL).
tastoSu(tasto_modificatore) Rilascia un tasto modificatore. Parametro: un tasto modificatore (Keys.ALT, Keys.SHIFT o Keys.CONTROL).
moveByOffset(scostamento x, scostamento y) Sposta il mouse dalla sua posizione corrente (o 0,0) della distanza specificata. Un valore negativo sull'asse x sposta il cursore a sinistra; un valore negativo sull'asse y sposta il cursore verso l'alto.
spostaToElemento(toElemento) Sposta il mouse al centro dell'elemento. Parametro: l'elemento verso cui spostare il cursore.
pubblicazione() Rilascia il pulsante sinistro del mouse premuto nella posizione corrente.
sendKeys(onElement, sequenza di caratteri) Invia una sequenza di tasti a un elemento. Parametri: onElement (solitamente un campo di testo), charsequence (la sequenza di tasti da inviare).

Nell'esempio seguente, utilizziamo il moveToElement() metodo per passare il mouse sopra uno dei Mercury Righe della tabella dei tour.

Gestione degli eventi di tastiera e mouse

La cellula mostrata sopra fa parte di una elemento. Quando non si passa il mouse sopra, il suo colore รจ #FFC455 (arancione). Dopo aver passato il mouse sopra, il colore della cella diventa trasparente e si adatta allo sfondo della tabella circostante.

Passo 1) Importa il Azione e Action classi.

Importa azioni e classi di azioni

Passo 2) Istanziare un nuovo oggetto Actions.

Istanziare l'oggetto Azioni

Passo 3) Crea un'istanza di un'azione utilizzando l'oggetto Actions del passaggio 2.

Istanziare l'oggetto Action

Qui usiamo il moveToElement() metodo per passare il mouse sul collegamento โ€œHomeโ€. build() Il metodo viene sempre chiamato per ultimo, in modo che tutte le azioni elencate vengano combinate in un unico passaggio.

Passo 4) Usa il perform() metodo per eseguire l'oggetto Azione progettato nel passaggio 3.

Eseguire l'azione

Di seguito รจ riportato il codice WebDriver completo che controlla il colore di sfondo dell' elemento prima e dopo il passaggio del mouse.

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

L'output seguente mostra che il colore di sfondo รจ diventato trasparente al passaggio del mouse.

output al passaggio del mouse

Costruire una serie di azioni multiple

รˆ possibile costruire una serie di azioni utilizzando le classi Action e Actions. Ricorda di chiudere la serie con build() metodo. Considera il codice di esempio riportato di seguito.

Costruire una serie di azioni multiple

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 di azioni in uscita

Domande Frequenti

La classe Action rappresenta una sequenza compilata di interazioni da tastiera e mouse create con la classe Actions. Viene eseguita tramite l'API Advanced User Interactions in Selenium WebDriver.

Actions (plurale) รจ il costruttore utilizzato per concatenare interazioni come hover e click. Action (singolare) รจ l'oggetto compilato restituito da build() che viene eseguito con perform().

La funzione build() compila tutte le interazioni concatenate in un'unica azione composita. Viene sempre chiamata per ultima, subito prima di perform(), in modo che i passaggi in coda vengano eseguiti insieme come un'unica sequenza.

Il metodo perform() esegue l'azione creata sul browser. Senza di esso, le interazioni concatenate vengono solo messe in coda e non vengono mai effettivamente inviate alla pagina.

Utilizza il metodo moveToElement(element) su un oggetto Actions, quindi chiama build() e perform(). In questo modo il cursore si sposta al centro dell'elemento e viene attivato qualsiasi comportamento al passaggio del mouse, come ad esempio un menu a tendina.

Supporta clickAndHold, contextClick, doubleClick, dragAndDrop, dragAndDropBy, keyDown, keyUp, moveByOffset, moveToElement, release e sendKeys, coprendo la maggior parte delle interazioni avanzate.

Gli strumenti di intelligenza artificiale utilizzano localizzatori auto-riparanti che si adattano al cambiamento degli elementi, riducendo i malfunzionamenti intermittenti nei test di hover e di trascinamento. Inoltre, raccomandano XPath stabili e aggiungono automaticamente tempi di attesa intelligenti.

Sรฌ. Gli assistenti di codice basati sull'IA trasformano uno scenario in linguaggio naturale come "passa il mouse sopra Home e poi fai clic con il pulsante destro del mouse" in una sequenza di azioni funzionante con build() e perform() e suggeriscono localizzatori robusti.

Riassumi questo post con: