Zapisy otwarte! Dołącz do kursu Selenium w Javie lub Selenium w C#. Tylko do 23.09.2021 do godz. 21:00. Zapisz się tutaj.

Selenium 54. Gesty w Selenium: zdarzenia klawiatury i wysyłanie tekstu

W tej lekcji pokażę Ci jak obsłużyć zdarzenia klawiatury w Selenium oraz jak przesłać tekst korzystając z klasy Actions.

Po obsłudze zdarzeń myszki przyszedł czas na obsługę zdarzeń klawiatury. Za pomocą metody z klasy Actions możemy wysłać do pola tekst, podobnie jak robiliśmy to używając odpowiedniej metody na WebElementach. Klasa Actions dostarcza jednak jeszcze mechanizm służący do tego, żeby zasymulować przytrzymanie dowolnego klawisza podczas wykonywania jakiejś akcji myszką. Co istotne, działa to nie tylko na polach tekstowych: możesz na przykład zaznaczać jakieś elementy na stronie przytrzymując klawisz CTRL.

Metody, o których mówię w tym filmie dostępne są w dokumentacji Selenium pod tym linkiem: Class Actions.

Nie zaszkodzi Ci też zajrzeć do lekcji o wykonywaniu JavaScriptów w Selenium. W tej lekcji używam JavaScriptu, żeby przescrollować stronę do odpowiedniego elementu.

Wsparcie merytoryczne

Nie masz dostępu do wsparcia merytorycznego dla tego kursu. Wykup dostęp albo zaloguj się, by móc zadawać pytania.

  1. Cześć!
    Niestety tak wyglądający kod nie daje mi w rezultacie dużych liter.

     @Test
        public void sendKeysExample() {
            driver.navigate().to("https://fakestore.testelka.pl/moje-konto/");
            WebElement login = driver.findElement(By.cssSelector("#username"));
    
            //actions.sendKeys("jakiś tekst albo klawisz modyfikujący");
            ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", login);
            actions.click(login).sendKeys(Keys.LEFT_SHIFT, "testowy user").build().perform();
    
            //actions.sendKeys("element, jakiś tekst albo klawisz modyfikujący");
            actions.sendKeys(login, Keys.LEFT_SHIFT, "testowy user").build().perform();
        } 

    Screen: https://snipboard.io/vMck5L.jpg
    Wiesz może co jest tego przyczyną? Wydaje mi się że nie popełniłem żadnej literówki 😐
    Pozdrawiam!

    Odpowiedz
  2. Cześć! Poniższy test raz przechodzi a raz nie. Raz zaznacza 3 elementy, kolejnym razem jeden albo w ogóle.
    Czy wiesz co może być tego przyczyną? Przy "failowaniu" zwraca błąd -"stale element reference: element is not attached to the page document"

    @Test
        public void KeyUpAndDownExample2 () {
            driver.navigate().to("https://jqueryui.com/selectable/#default");
            driver.switchTo().frame(0);
            List listItems = driver.findElements(By.cssSelector("li.ui-selectee"));
            actions.keyDown(Keys.CONTROL).click(listItems.get(0)).click(listItems.get(1)).click(listItems.get(2)).
                    keyUp(Keys.CONTROL).build().perform();
    
    Odpowiedz