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.

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.
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.
Passo 2) Istanziare un nuovo oggetto Actions.
Passo 3) Crea un'istanza di un'azione utilizzando l'oggetto Actions del passaggio 2.
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.
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.
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.
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();
}





