Clasa de acțiune în Selenium
⚡ Rezumat inteligent
Clasa de acțiune în Selenium gestionează evenimentele avansate de la tastatură și mouse, cum ar fi trecerea cu mouse-ul, drag-and-drop, clic dreapta și combinațiile de taste, prin intermediul API-ului Advanced User Interactions. Acest tutorial explică clasele Actions și Action, metodele tastelor și cum să înlănțui mai multe interacțiuni într-o singură secvență.

Clasa de acțiune în Selenium
Clasa de acțiune în Selenium este o funcție încorporată pentru gestionarea evenimentelor de la tastatură și mouse. Acceptă operațiuni precum clicuri multiple cu tasta Control, drag-and-drop și multe altele. Aceste operațiuni sunt efectuate folosind API-ul Advanced User Interactions din Selenium WebDriver.
Gestionarea evenimentelor de la tastatură și mouse
Gestionarea evenimentelor speciale de la tastatură și mouse se face folosind Advanced User Interactions API. Acesta conține Acţiuni și Acțiune clasele necesare pentru executarea acestor evenimente. Cele mai frecvent utilizate evenimente de tastatură și mouse furnizate de clasa Actions sunt enumerate mai jos.
| Metodă | Descriere |
|---|---|
| apasă si menține() | Faceți clic (fără a elibera) în locația curentă a mouse-ului. |
| contextClick() | Efectuează un clic contextual (clic dreapta) în locația curentă a mouse-ului. |
| doubleClick() | Efectuează un dublu clic pe locația curentă a mouse-ului. |
| dragAndDrop(sursă, țintă) | Clic și menținere apăsată pe elementul sursă, mutare la elementul țintă, apoi eliberare mouse-ului. Parametri: sursă (elementul pe care se apasă), țintă (elementul la care se eliberează). |
| dragAndDropBy(sursă, x-offset, y-offset) | Se ține apăsat pe elementul sursă, se deplasează cu o anumită distanță, apoi se eliberează. Parametri: sursă, xOffset (orizontal), yOffset (vertical). |
| keyDown(cheie_modificatoare) | Apasă o tastă modificatoare fără a o elibera, astfel încât interacțiunile ulterioare presupun că rămâne apăsată. Parametru: o tastă modificatoare (Keys.ALT, Keys.SHIFT sau Keys.CONTROL). |
| keyUp(tasta_modificatoare) | Eliberează o tastă modificatoare. Parametru: o tastă modificatoare (Keys.ALT, Keys.SHIFT sau Keys.CONTROL). |
| moveByOffset(decalaj x, decalaj y) | Mută mouse-ul din poziția sa curentă (sau 0,0) cu offset-ul dat. Un x negativ se deplasează la stânga; un y negativ se deplasează în sus. |
| moveToElement(laElement) | Mută mouse-ul la mijlocul elementului. Parametru: elementul la care se va muta. |
| eliberare() | Eliberează butonul stâng apăsat al mouse-ului în locația curentă. |
| sendKeys(onElement, charsequence) | Trimite o serie de apăsări de taste către un element. Parametri: onElement (de obicei un câmp de text), charsequence (apăsările de taste de trimis). |
În exemplul următor, folosim moveToElement() metodă de a trece cursorul peste unul dintre Mercury Rândurile tabelului Tours.
Celula prezentată mai sus face parte dintr-o element. Când nu este plasat cu mouse-ul, culoarea sa este #FFC455 (portocaliu). După plasarea cu mouse-ul, culoarea celulei devine transparentă și se potrivește cu fundalul tabelului din jur.
Pas 1) Importați fișierul Acţiuni și Acțiune clase.
Pas 2) Instanciați un nou obiect Actions.
Pas 3) Instanțiați o acțiune folosind obiectul Actions de la pasul 2.
Aici folosim moveToElement() metodă pentru a trece cu mouse-ul peste linkul „Acasă”. build() Metoda este întotdeauna apelată ultima, astfel încât toate acțiunile listate sunt compilate într-un singur pas.
Pas 4) Folosește perform() metodă de executare a obiectului Action proiectat în Pasul 3.
Mai jos este codul WebDriver complet care verifică culoarea de fundal a element înainte și după trecerea mouse-ului peste el.
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();
}
}
Rezultatul de mai jos arată că culoarea de fundal a devenit transparentă după trecerea mouse-ului peste ea.
Construirea unei serii de acțiuni multiple
Puteți construi o serie de acțiuni folosind clasele Action și Actions. Nu uitați să închideți seria cu build() metodă. Luați în considerare codul exemplu de mai jos.
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();
}





