Akční třída v Selenium
⚡ Chytré shrnutí
Akční třída v Selenium Zpracovává pokročilé události klávesnice a myši, jako je najetí myší, přetažení, kliknutí pravým tlačítkem myši a kombinace kláves, prostřednictvím rozhraní Advanced User Interactions API. Tento tutoriál vysvětluje třídy Actions a Action, metody kláves a jak zřetězit více interakcí do jedné sekvence.

Akční třída v Selenium
Akční třída v Selenium je vestavěná funkce pro zpracování událostí klávesnice a myši. Podporuje operace, jako je více kliknutí klávesou Ctrl, přetahování a mnoho dalších. Tyto operace se provádějí pomocí rozhraní API pro pokročilé uživatelské interakce v Selenium WebDriver.
Zvládání událostí klávesnice a myši
Zpracování speciálních událostí klávesnice a myši se provádí pomocí Rozhraní API pro pokročilé uživatelské interakce. Obsahuje Akce a Akce třídy, které jsou potřebné k provedení těchto událostí. Níže jsou uvedeny nejčastěji používané události klávesnice a myši poskytované třídou Actions.
| Metoda | Description |
|---|---|
| clickAndHold() | Kliknutí (bez uvolnění) na aktuální pozici myši. |
| contextClick() | Provede kontextové kliknutí (kliknutí pravým tlačítkem myši) na aktuální pozici myši. |
| doubleClick() | Provede poklepání na aktuální pozici myši. |
| dragAndDrop(zdroj, cíl) | Klikne a podrží tlačítko myši na zdrojovém prvku, přesune se na cílový prvek a poté uvolní tlačítko myši. Parametry: zdroj (prvek, na který se má kliknout), cíl (prvek, na kterém se má uvolnit). |
| dragAndDropBy(zdroj, x-posun, y-posun) | Klikne a podrží na zdrojovém prvku, posune se o daný offset a poté uvolní. Parametry: zdroj, xOffset (horizontální), yOffset (vertikální). |
| keyDown(modifikační_klíč) | Stiskne modifikační klávesu bez jejího uvolnění, takže pozdější interakce předpokládají, že zůstane stisknutá. Parametr: modifikační klávesa (Keys.ALT, Keys.SHIFT nebo Keys.CONTROL). |
| keyUp(modifikační_klávesa) | Uvolní modifikační klávesu. Parametr: modifikační klávesa (Keys.ALT, Keys.SHIFT nebo Keys.CONTROL). |
| moveByOffset(x-posun, y-posun) | Přesune myš z její aktuální pozice (nebo 0,0) o daný offset. Záporné x se posune doleva; záporné y se posune nahoru. |
| moveToElement(toElement) | Přesune myš do středu elementu. Parametr: element, na který se má přesunout. |
| uvolnění() | Uvolní stisknuté levé tlačítko myši v aktuálním místě. |
| sendKeys(onElement, charsequence) | Odešle elementu řadu klávesových zkratek. Parametry: onElement (obvykle textové pole), charsequence (klávesové zkratky, které se mají odeslat). |
V následujícím příkladu použijeme moveToElement() metoda najetí myší na jeden z Mercury Řádky tabulky Tours.
Výše uvedená buňka je součástí element. Pokud na něj nenajedete myší, jeho barva je #FFC455 (oranžová). Po najetí myší se barva buňky stane průhlednou a odpovídá pozadí okolní tabulky.
Krok 1) Importujte Akce a Akce třídy.
Krok 2) Vytvořte instanci nového objektu Actions.
Krok 3) Vytvořte instanci akce pomocí objektu Actions z kroku 2.
Zde používáme moveToElement() metoda pro najetí myší na odkaz „Domů“. build() Metoda je vždy volána jako poslední, aby se všechny uvedené akce zkompilovaly do jednoho kroku.
Krok 4) Použití perform() metoda pro spuštění objektu Action navrženého v kroku 3.
Níže je uveden kompletní kód WebDriveru, který kontroluje barvu pozadí prvek před a po najetí myší.
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();
}
}
Níže uvedený výstup ukazuje, že barva pozadí se po najetí myší stala průhlednou.
Vytvoření řady vícenásobných akcí
Sérii akcí můžete vytvořit pomocí tříd Action a Actions. Nezapomeňte sérii uzavřít třídou build() metoda. Vezměte si níže uvedený vzorový kód.
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();
}





