Klasa akcji w Selenium – Zdarzenia związane z kliknięciem myszą i klawiaturą
W tym samouczku nauczymy się obsługiwać zdarzenia klawiatury i myszy w Selenium Sterownik internetowy
Klasa akcji w Selenium
Klasa akcji w Selenium jest wbudowaną funkcją udostępnianą przez selen do obsługi zdarzeń klawiatury i myszy. Obejmuje ona różne operacje, takie jak klikanie wielu zdarzeń za pomocą klawisza Control, zdarzenia przeciągania i upuszczania i wiele innych. Te operacje z klasy akcji są wykonywane przy użyciu zaawansowanego interfejsu API interakcji użytkownika w Selenium Sterownik internetowy.
Obsługa zdarzeń klawiatury i myszy
Obsługa specjalnych zdarzeń klawiatury i myszy odbywa się za pomocą metody Zaawansowane API interakcji użytkownika. Zawiera Akcje i Działania klasy, które są potrzebne podczas wykonywania tych zdarzeń. Poniżej przedstawiono najczęściej używane zdarzenia klawiatury i myszy dostarczane przez klasę Actions.
Metoda wykonania | Opis |
---|---|
Kliknij i przytrzymaj() | Kliknięcia (bez zwalniania) w bieżącym położeniu myszy. |
kontekstKliknięcie() | Wykonuje kliknięcie kontekstowe w bieżącej lokalizacji myszy. (Kliknięcie prawym przyciskiem myszy) |
podwójne kliknięcie() | Wykonuje dwukrotne kliknięcie w bieżącym położeniu myszy. |
dragAndDrop(źródło, cel) | Wykonuje kliknięcie i przytrzymanie w lokalizacji elementu źródłowego, przechodzi do lokalizacji elementu docelowego, a następnie zwalnia mysz.
Parametry: element źródłowy do emulowania przycisku. cel – element, do którego można się przenieść i zwolnić mysz. |
dragAndDropBy(źródło, przesunięcie x, przesunięcie y) | Wykonuje kliknięcie i przytrzymanie w lokalizacji elementu źródłowego, przesuwa się o zadane przesunięcie, a następnie zwalnia mysz.
parametry: element źródłowy do emulowania przycisku. xOffset - przesunięcie ruchu poziomego. yOffset — przesunięcie w pionie. |
keyDown(klucz_modyfikatora) | Wykonuje naciśnięcie klawisza modyfikującego. Nie zwalnia klawisza modyfikującego – w kolejnych interakcjach można zakładać, że jest on wciśnięty.
parametry: modyfikator_klucz – dowolny z klawiszy modyfikujących (Klawisze.ALT, Klawisze.SHIFT lub Klawisze.CONTROL) |
keyUp(modyfikator _key) | Wykonuje zwolnienie klawisza.
parametry: modyfikator_klucz – dowolny z klawiszy modyfikujących (Klawisze.ALT, Klawisze.SHIFT lub Klawisze.CONTROL) |
moveByOffset(przesunięcie x, przesunięcie y) | Przesuwa mysz z jej aktualnej pozycji (lub 0,0) o podane przesunięcie.
parametry: x-offset — przesunięcie poziome. Wartość ujemna oznacza przesunięcie myszy w lewo. y-offset – przesunięcie pionowe. Wartość ujemna oznacza przesunięcie myszy w dół. |
przenieś do elementu (do elementu) | Przesuwa mysz na środek elementu.
parametry: toElement – element, do którego należy się przenieść. |
uwolnienie() | Zwalnia wciśnięty lewy przycisk myszy w bieżącym położeniu myszy |
sendKeys(onElement, sekwencja znaków) | Wysyła serię naciśnięć klawiszy na element.
parametry: onElement – element, który będzie odbierał naciśnięcia klawiszy, zwykle pole tekstowe charsequence – dowolna wartość ciągu reprezentująca sekwencję naciśnięć klawiszy, która ma zostać wysłana |
W poniższym przykładzie użyjemy metody moveToElement(), aby najechać kursorem na jeden element. Mercury Wiersze tabeli Tours. Zobacz przykład poniżej.
Komórka pokazana powyżej jest częścią a element. Jeśli nie jest najechany kursorem, jego kolor to #FFC455 (pomarańczowy). Po najechaniu kolor komórki staje się przezroczysty. Przybiera ten sam kolor, co niebieskie tło całego pomarańczowego stołu.
Krok 1) Importuj Akcje i Działania Klasy.
Krok 2) Utwórz instancję nowego obiektu Actions.
Krok 3) Utwórz instancję akcji, korzystając z obiektu Actions w kroku 2.
W tym przypadku użyjemy metody moveToElement(), ponieważ po prostu najedziemy myszką na link „Strona główna”. Metoda build() jest zawsze ostateczną metodą, dzięki czemu wszystkie wymienione akcje zostaną skompilowane w jednym kroku.
Krok 4) Użyj metody perform() podczas wykonywania obiektu Action, który zaprojektowaliśmy w kroku 3.
Poniżej znajduje się cały kod WebDrivera służący do sprawdzania koloru tła pliku element przed i po najechaniu myszką.
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(); } }
Poniższy wynik wyraźnie stwierdza, że kolor tła stał się przezroczysty po najechaniu myszką.
Budowanie serii wielu działań
Za pomocą klas Action i Actions można zbudować serię akcji. Pamiętaj tylko o zamknięciu serii metodą build(). Rozważ poniższy przykładowy kod.
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() ; }
Podsumowanie
- Obsługa specjalnych zdarzeń klawiatury i myszy odbywa się za pomocą interfejsu API AdvancedUserInteractions.
- Często używanymi słowami kluczowymi i zdarzeniami myszy są doubleClick(), keyUp, dragAndDropBy, contextClick i sendKeys.