Akční třída v Selenium – Události kliknutí myší a klávesnice
V tomto tutoriálu se naučíme zacházet s Keyboard and Mouse Event in Selenium Webdriver
Akční třída v Selenium
Akční třída v Selenium je vestavěná funkce poskytovaná selenem pro zpracování událostí klávesnice a myši. Zahrnuje různé operace, jako je kliknutí na více událostí pomocí ovládacího tlačítka, události drag and drop a mnoho dalších. Tyto operace ze třídy akcí se provádějí pomocí pokročilého rozhraní API pro interakci s uživatelem 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é při provádění těchto událostí. Níže jsou uvedeny nejběžně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í na aktuální pozici myši. (Akce kliknutím pravým tlačítkem myši) |
doubleClick() | Provede poklepání na aktuální pozici myši. |
dragAndDrop(zdroj, cíl) | Provede kliknutí a podržení v umístění zdrojového prvku, přesune se do umístění cílového prvku a poté uvolní myš.
parametry: zdrojový prvek k emulaci tlačítka dole na. cílový prvek, na který se přesunete a uvolníte myš. |
dragAndDropBy(zdroj, x-posun, y-posun) | Provede kliknutí a podržení v místě zdrojového prvku, posune se o daný posun a poté uvolní myš.
parametry: zdrojový prvek k emulaci tlačítka dole na. xOffset- horizontální posun posunutí. yOffset- posunutí vertikálního posunu. |
keyDown(modifikační_klíč) | Provede stisk modifikační klávesy. Neuvolňuje modifikační klávesu – následné interakce mohou předpokládat, že je stisknutá.
parametry: modifikační_klíč – jakákoliv modifikační klávesa (Keys.ALT, Keys.SHIFT nebo Keys.CONTROL) |
keyUp(modifikátor _key) | Provede uvolnění klíče.
parametry: modifikační_klíč – jakákoliv modifikační klávesa (Keys.ALT, Keys.SHIFT nebo Keys.CONTROL) |
moveByOffset(x-posun, y-posun) | Posune myš ze své aktuální pozice (nebo 0,0) o daný offset.
parametry: x-offset- horizontální offset. Záporná hodnota znamená pohyb myši doleva. y-offset- vertikální offset. Záporná hodnota znamená pohyb myši dolů. |
moveToElement(toElement) | Přesune myš do středu prvku.
parametry: toElement- prvek, ke kterému se má přesunout. |
uvolnění() | Uvolní stisknuté levé tlačítko myši v aktuální poloze myši |
sendKeys(onElement, charsequence) | Odešle sérii úhozů na prvek.
parametry: onElement – prvek, který bude přijímat stisknuté klávesy, obvykle textové pole charsequence – libovolná řetězcová hodnota představující sekvenci odeslaných úhozů |
V následujícím příkladu použijeme metodu moveToElement() k přejetí myší na jeden Mercury Řádky tabulky zájezdů. Viz příklad níže.
Výše uvedená buňka je částí a živel. Pokud není umístěn, jeho barva je #FFC455 (oranžová). Po najetí se barva buňky zprůhlední. Stane se stejnou barvou jako modré pozadí celého oranžového stolu.
Krok 1) Importujte Akce si Akce třídy.
Krok 2) Vytvořte instanci nového objektu Actions.
Krok 3) Vytvořte instanci Akce pomocí objektu Actions v kroku 2.
V tomto případě použijeme metodu moveToElement(), protože jednoduše přejedeme myší na odkaz „Domů“. Metoda build() je vždy poslední použitou metodou, takže všechny uvedené akce budou zkompilovány do jediného kroku.
Krok 4) Při provádění objektu Action, který jsme navrhli v kroku 3, použijte metodu perform().
Níže je celý kód WebDriver pro kontrolu barvy pozadí souboru prvek před a po přejetí 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 = "http://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 jasně uvádí, že barva pozadí se po najetí myší stala průhlednou.
Vytvoření řady vícenásobných akcí
Pomocí tříd Action a Actions můžete vytvořit řadu akcí. Nezapomeňte sérii uzavřít pomocí metody build(). Zvažte ukázkový kód níže.
public static void main(String[] args) { String baseUrl = "http://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() ; }
Shrnutí
- Zpracování speciálních událostí klávesnice a myši se provádí pomocí AdvancedUserInteractions API.
- Často používané události klíčového slova a myši jsou doubleClick(), keyUp, dragAndDropBy, contextClick & sendKeys.