• Przejdź do głównej nawigacji
  • Przejdź do treści
  • Przejdź do głównego paska bocznego
  • Przejdź do stopki
Testelka.pl

Testelka.pl

Testelka.pl - o technologiach w testowaniu oprogramowania

  • Kursy
    • DARMOWY: Java dla testerów
    • Selenium w Javie
    • Selenium w C#
    • Testy API w REST Assured
    • Selektory CSS
    • XPath
  • Materiały na raz
  • Blog
  • O Eli
  • Zaloguj się
  • DOŁĄCZ

Selenium 32. Zadanie: interakcje z WebElementami

Strona główna > Kursy > Kurs Selenium w Javie > Selenium 32. Zadanie: interakcje z WebElementami

Czas przećwiczyć to, co przerobiliśmy wspólnie w kilku ostatnich filmach. Przed Tobą zadanie z interakcji z WebElementami.

Na początku filmu tłumaczę polecenie, a następnie rozwiązanie. Będzie moment żeby zatrzymać film na czas wykonania zadania – dam znać w filmie kiedy.

Polecenie do zadania

Ukryta treść

Nie masz aktywnej subskrypcji. Wykup subskrypcję albo zaloguj się, by móc zobaczyć pełną lekcję.

Reader Interactions

Komentarze

Nie masz aktywnej subskrypcji. Wykup subskrypcję albo zaloguj się, by móc komentować.

Komentarze

  1. Magdalena Zagwojska napisał

    2 marca, 2020 o 9:07 am

    Czy selenium widzi tylko to co jest na ekranie?
    Pierwszy test zakończył się okej, a drugi nie. W drugim przypadku button faktycznie nie jest widoczny na ekranie. O co chodzi? Różnią się tylko wielkością okna.

    public class Login {
    WebDriver driver;
    
    @BeforeEach
    public void driverSetup(){
    System.setProperty("webdriver.chrome.driver", "src/main/resources/chromedriver.exe");
    driver = new ChromeDriver();
    //driver.manage().window().maximize();
    driver.manage().window().setSize(new Dimension(1200, 700));
    driver.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS);
    driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
    driver.navigate().to(" https://fakestore.testelka.pl/moje-konto/");
    }
    
    @AfterEach
    public void quit(){
    driver.close();
    driver.quit();
    }
    
    @Test
    public void userLoginOk(){
    driver.findElement(By.cssSelector("input[id='username']")).sendKeys("magdalena.zagwojska");
    driver.findElement(By.cssSelector("#password")).sendKeys("Samolot123");
    driver.findElement(By.cssSelector("button[name='login']")).click();
    }
    }
    

    a ten nie przeszedł:

    public class Login {
    WebDriver driver;
    
    @BeforeEach
    public void driverSetup(){
    System.setProperty("webdriver.chrome.driver", "src/main/resources/chromedriver.exe");
    driver = new ChromeDriver();
    driver.manage().window().maximize();
    //driver.manage().window().setSize(new Dimension(1200, 700));
    driver.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS);
    driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
    driver.navigate().to(" https://fakestore.testelka.pl/moje-konto/");
    }
    
    @AfterEach
    public void quit(){
    driver.close();
    driver.quit();
    }
    
    @Test
    public void userLoginOk(){
    driver.findElement(By.cssSelector("input[id='username']")).sendKeys("magdalena.zagwojska");
    driver.findElement(By.cssSelector("#password")).sendKeys("Samolot123");
    driver.findElement(By.cssSelector("button[name='login']")).click();
    }
    }
    
    Odpowiedz
    • Ela Sądel napisał

      2 marca, 2020 o 4:33 pm

      Halko! U mnie przechodzą oba. Żeby Ci jakoś pom [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

      Odpowiedz
      • Ela Sądel napisał

        3 marca, 2020 o 9:45 am

        Moja kryształowa kula* mówi, że inny element pr [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

        Odpowiedz
        • Magdalena Zagwojska napisał

          4 marca, 2020 o 10:54 am

          Aha, czyli jednak rozmiar okna ma znaczenie w tym przypadku : )
          Widziałam ten niebieski pasek i widziałam, że Selenium nie widzi buttona i zastanawiałam się czy to tak powinno działać. Jeśli jest to prawidłowe działanie no to super : )

          Odpowiedz
          • Ela Sądel napisał

            4 marca, 2020 o 11:05 am

            Tak, działa w sposób oczekiwany 😀 Ogólnie czę [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

    • Aleksandra Kurtyka napisał

      6 maja, 2020 o 9:27 pm

      Dzięki dziewczyny za komentarze! U mnie pojawiał się ten błąd przy testowaniu rejestracji i długo nie mogłam dojść do tego co się dzieje. Po zwiększeniu okna przeglądarki test przeszedł 😉 i wiem, że automatyzacja rejestracji jednego użytkownika jest trochę bezsensu, ale to praktyka czyni mistrza, czy jakoś tak 😀

      Odpowiedz
  2. Magdalena Zagwojska napisał

    4 marca, 2020 o 11:32 am

    No tak, to faktycznie był skrót myślowy : ) obecnie mam przerwę od pracy i wypadłam z rytmu bycia dosłownym w 100% ; P

    Odpowiedz
  3. Anna Marczyńska napisał

    29 kwietnia, 2020 o 9:27 pm

    Cześć,

    Poradzisz proszę?
    Mam póki co mam następujący problem z poniższym kodem - assercja nie przechodzi, ponieważ pobierany wpisany adres email jest pusty. Powinnam użyć czegoś innego niż getText()? I tak, wiem, że assercja ta nie ma sensu za bardzo ale chciałam poćwiczyć pobieranie wartości 😉

    driver.findElement(By.id("reg_email")).sendKeys("anna.mar@gmail.com");
    driver.findElement(By.id("reg_password")).sendKeys("t&^$oo098est1p@ss");

    System.out.println("x " + driver.findElement(By.id("reg_email")).getText());
    driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
    Assertions.assertEquals("anna.mar@gmail.com", driver.findElement(By.id("reg_email")).getText(), "email address is not correct");

    driver.findElement(By.cssSelector("button[name=\"register\"]")).click();

    Odpowiedz
    • Ela Sądel napisał

      30 kwietnia, 2020 o 9:19 am

      Halko! Wystarczy, że zajrzysz do zakładki "Eleme [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

      Odpowiedz
  4. Łukasz Pilch napisał

    1 grudnia, 2020 o 12:57 pm

    @Test
    public void should_correctly_log_in(){
    driver.findElement(By.xpath(".//input[@id=\"username\"]")).sendKeys(username);
    driver.findElement(By.xpath(".//input[@id=\"password\"]")).sendKeys(password);
    driver.findElement(By.xpath(".//button[@name=\"login\"]")).click();

    List username = driver.findElements(By.xpath(".//*[@class=\"woocommerce-MyAccount-content\"]//strong"));
    List username_string = new ArrayList();
    for(WebElement e : username){
    username_string.add(e.getText());
    }
    System.out.println(username_string);

    Assertions.assertEquals("lukaszpilch31", username_string.get(0), "First usage of Username is not the same as expected");
    Assertions.assertEquals("lukaszpilch31", username_string.get(1), "Second usage of Username is not the same as expected");
    }
    Napisałem taki happy path case do zalogowania się i jako że w dwóch miejscach po zalogowaniu się jest element z atrybutem strong w którym znajduje się username to zrobiłem dwie asercje na liście elementów. Test przechodzi, ale czy taki test case jest poprawnie napisany czy lepiej sprawdzać w sposób opisany w rozwiązaniu?

    Odpowiedz
    • Ela Sądel napisał

      1 grudnia, 2020 o 4:36 pm

      Halko! Powiedziałabym nawet, że częściej się [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

      Odpowiedz

Pierwszy Sidebar

LEKCJE W KURSIE

  • Przygotowanie środowiska programistycznego (DARMOWA LEKCJA)
  • Inicjalizacja drivera i demo Selenium (DARMOWA LEKCJA)
  • Nawigacja pomiędzy stronami (DARMOWA LEKCJA)
  • Zamykanie przeglądarki lub sesji (DARMOWA LEKCJA)
  • Zadanie: zamykanie przeglądarki i sesji (DARMOWA LEKCJA)
  • Tytuł strony, URL i jej źródło
  • Zadanie: pobieranie tytułu, URLa i źródła strony
  • Ciasteczka
  • Zadanie: ciasteczka
  • Rozmiar i pozycja okna przeglądarki
  • Zadanie: rozmiar i pozycja okna przeglądarki
  • Metody lokalizujące
  • Mechanizmy lokalizujące: nazwa klasy, id, atrybut name, nazwa taga
  • Mechanizmy lokalizujące: tekst linku
  • Zadanie: proste lokatory
  • Mechanizmy lokalizujące: wprowadzenie do selektorów CSS i XPath
  • Selektory CSS: tag, id, klasa
  • Selektory CSS: atrybuty i łączenie warunków
  • Zadanie: atrybuty i łączenie warunków w selektorach CSS
  • Selektory CSS: fragment wartości atrybutu
  • Zadanie: fragment wartości atrybutów w selektorach CSS
  • Selektory CSS: relacje między elementami
  • Zadanie: relacje w selektorach CSS
  • XPath: atrybuty i tagi
  • XPath: fragment atrybutu i tekst
  • Zadanie: atrybuty i tekst w XPath
  • XPath: relacje między elementami
  • Zadanie: relacje między elementami w XPath
  • Timeouty: oczekiwanie na pojawienie się elementu i załadowanie strony
  • Interakcje z WebElementami: klikanie w elementy i wprowadzanie tekstu
  • Interakcje z WebElementami: wgrywanie pliku z dysku
  • Zadanie: interakcje z WebElementami
  • Wstęp do zasad programowania: DRY
  • Wstęp do zasad programowania: KISS
  • Wstęp do zasad programowania: YAGNI
  • Zadanie: wstęp do zasad programowania
  • Czekanie na warunki: ExplicitWait
  • Czekanie na warunki: ExpectedConditions
  • Zadanie: czekanie na warunki
  • Metody na WebElementach: pobieranie informacji o elementach i findElement()
  • Zadanie: metody na WebElementach
  • Ramki
  • Zadanie: ramki
  • Wykonywanie JavaScriptów
  • Zadanie: wykonywanie JavaScriptów
  • Obsługa alertów
  • Zadanie: obsługa alertów
  • Praca na kilku oknach przeglądarki
  • Zadanie: praca na kilku oknach przeglądarki
  • Listy rozwijane
  • Zadanie: listy rozwijane
  • Gesty w Selenium: wstęp
  • Gesty w Selenium: klik, podwójny klik oraz prawy przycisk myszy
  • Gesty w Selenium: zdarzenia klawiatury i wysyłanie tekstu
  • Zadanie: gesty w Selenium
  • Gesty w Selenium: przesuwanie obiektów
  • Zadanie: przesuwanie obiektów
  • Web Storage: metody na Local Storage i Session Storage
  • Web Storage: użycie JavaScript
  • Zadanie: WebStorage
  • Zrzuty ekranu: wykonywanie screenshotów strony i elementów
  • Zrzuty ekranu: przykład użycia screenshotów
  • Inicjalizacja driverów: Chrome, Firefox, Opera, Internet Explorer, Edge
  • Konfiguracja Selenium Grid
  • RemoteWebDriver: inicjalizacja drivera wspierającego testy w trybie rozproszonym
  • Projekt testowy
  • Omówienie projektu testowego: testy koszyka
  • Omówienie projektu testowego: testy płatności
  • Omówienie projektu testowego: testy metod płatności
  • Page Object Model: wprowadzenie
  • Page Object Model: jak zacząć budować własny framework testowy
  • Page Object Model: kolejna klasa Page Object
  • Zadanie z POM: przepisanie testu addOneProductTenTimesTest()
  • Page Object Model: refaktoryzacja kodu i klasa BaseTest
  • Page Object Model: refaktoryzacja kodu i klasa BasePage
  • Page Object Model: refaktoryzacja i nowa metoda w klasie CartPage
  • Page Object Model: części wspólne różnych stron na przykładzie HeaderPage
  • Zadanie z POM: części wspólne stron (stopka w POM)
  • Zadanie z POM: przepisanie pozostałych testów koszyka
  • Zadanie z POM: przepisanie testu płatności bez zakładania konta cz. 1
  • Zadanie z POM: przepisanie testu płatności bez zakładania konta cz. 2 - wprowadzanie danych karty
  • Page Object Model: DriverFactory
  • Plik konfiguracyjny
  • Wzorzec Singleton na przykładzie konfiguracji
  • Synchronizacja w Singletonie i konfiguracja bez Singletona
  • Dane testowe z pliku
  • PageFactory: inicjalizacja elementów i FindBy
  • Wady i zalety PageFactory oraz pozostałe możliwości

Footer

Elzbieta Natalia Sadel
Calle Marzo 9 1 D
41009 Sevilla
Hiszpania
NIF: Y7882076J

Zostań trenerem!

Regulamin
Polityka prywatności
Polityka wsparcia w ramach członkostwa

Koszulki i torby dla testerów

Pomoc
Kontakt

Poskładane z 💛 przez Automatela.pl

Ta strona korzysta z ciasteczek aby świadczyć usługi na najwyższym poziomie. Dalsze korzystanie ze strony oznacza, że zgadzasz się na ich użycie.ZgodaNie wyrażam zgodyPolityka prywatności