• 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 5. Zadanie: zamykanie przeglądarki i sesji

Strona główna > Kursy > Kurs Selenium w Javie > Selenium 5. Zadanie: zamykanie przeglądarki i sesji

Czas na zadanie z zamykania sesji i przeglądarki. Będziesz mieć okazję poćwiczyć to, co przerobiliśmy wspólnie w kilku ostatnich filmach.

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.

Chcesz takich filmów więcej? Zasubskrybuj mój kanał!

Polecenie do zadania

Napisz test, który wykona następujące kroki:

  1. Otworzy stronę główną Wikipedii.
  2. Następnie otworzy stronę główną Nasa.
  3. Cofnie się do strony Wikipedii (używając nawigacji wstecz).
  4. Potwierdź, że driver jest na stronie Wikipedii: porównaj (Assertions.assertEquals()) tytuł strony z oczekiwanym.
  5. Przejdź do strony Nasa (używając nawigacji naprzód).
  6. Potwierdź, że driver jest na stronie Nasa: porównaj tytuł strony z oczekiwanym.
  7. Zamknij okno przeglądarki.
  8. Zamknij sesję.

Pamiętaj o inicjalizacji WebDrivera i podaniu ścieżki do ChromeDrivera.

Rozwiązanie

Lepiej nie podglądać przed rozwiązaniem zadania ⚠️

package Zadania;

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class Zadanie1 {

    WebDriver driver;

    @BeforeEach
    public void driverSetup() {
        System.setProperty("webdriver.chrome.driver", "src/main/resources/chromedriver.exe");
        driver = new ChromeDriver();
        driver.manage().window().setSize(new Dimension(1280, 720));
    }

    @AfterEach
    public void closeAndQuit() {
        //7. Zamknij okno przeglądarki.
        driver.close();
        //8. Zamknij sesję.
        driver.quit();
    }

    @Test
    public void navigationTest() {
        //1. Otworzy stronę główną Wikipedii.
        driver.get("http://wikipedia.pl");
        //2. Następnie otworzy stronę główną Nasa.
        driver.navigate().to("https://nasa.gov");
        //3. Cofnie się do strony Wikipedii (używając nawigacji wstecz).
        driver.navigate().back();
        //4. Potwierdź, że driver jest na stronie Wikipedii: porównaj (Assertions.assertEquals()) tytuł strony z oczekiwanym.
        String wikiTitle = "Wikipedia, wolna encyklopedia";
        Assertions.assertEquals(wikiTitle, driver.getTitle(), "The title of the page is not: " + wikiTitle);
        //5. Przejdź do strony Nasa (używając nawigacji naprzód).
        driver.navigate().forward();
        //6. Potwierdź, że driver jest na stronie Nasa: porównaj tytuł strony z oczekiwanym.
        String nasaTitle = "NASA";
        Assertions.assertEquals(nasaTitle, driver.getTitle(), "The title of the page is not: " + nasaTitle);
    }
}

Reader Interactions

Komentarze

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

Komentarze

  1. Damian Wasilczyk napisał

    15 stycznia, 2020 o 10:02 pm

    Cześć, ogólnie zadanie udało mi się zrobić, jednak nie mogę dodać message przy asercji.

    Piszę taką linijkę:
    assertEquals(tittle2, driver.getTitle(), "Niepoprawna strona");
    (oczywiście po drugim przecinku w kompilatorze widzę jeszcze "message")
    Wtedy przy kompilacji dostaję error:
    Error:(51, 9) java: cannot access java.util.function.Supplier
    class file for java.util.function.Supplier not found

    W momencie pisania:
    assertEquals(tittle2, driver.getTitle());
    wszystko działa

    Co powinienem importować, żeby zadziałało? Niestety na lekcjach nie pokazujesz wszystkich linijek, przez co trudno jest mi znaleźć błąd.

    Edit: pozwolę sobie odpowiedzieć, ponieważ doszedłem do sedna: problemem był rozjazd wersji Javy w ustawieniach InteliJ
    Files > Settings > Build,Execution, Deployment > Compiiler > Java Compiler

    Odpowiedz
    • Elżbieta Sądel napisał

      16 stycznia, 2020 o 9:02 am

      Dzięki za informację (o tym, że się udało i g [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

      Odpowiedz
  2. Aleksandra Kurtyka napisał

    27 kwietnia, 2020 o 9:40 pm

    Nie polecam mieszać .get i .navigate().back() chwilę mi zajęło rozkminienie czemu test nie przechodzi z taką konfiguracją, ale po ustawieniu timeouts już tak 😀

    @Test
    public void getMethod(){
    driver.get("https://pl.wikipedia.org/wiki/Wikipedia:Strona_g%C5%82%C3%B3wna");
    driver.get("https://www.nasa.gov/");
    driver.navigate().back();

    Odpowiedz
    • Ela Sądel napisał

      28 kwietnia, 2020 o 9:29 am

      O, ciekawe, sprawdziłam jeszcze raz i u mnie nada [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

      Odpowiedz
      • Aleksandra Kurtyka napisał

        28 kwietnia, 2020 o 11:01 am

        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); dodany do @BeforeEach pomógł. Zamiana driver.get() na driver.naviagate().to() też pomogło i to bez timeout.

        Po prostu test nie przechodził aseracji:
        Assertions.assertEquals("Wikipedia, wolna encyklopedia", driver.getTitle());
        IntelliJ nie wykonywał do końca tej linijki driver.navigate().back(); a już przechodził do porównania, co w sumie jest dziwne, bo powinien zaczekać aż się strona wczyta

        Odpowiedz
        • Ela Sądel napisał

          28 kwietnia, 2020 o 11:32 am

          Powinien, ale może z jakiegoś powodu uznał, że [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

          Odpowiedz
  3. Ernest Jamka napisał

    27 maja, 2020 o 11:03 pm

    Chwilę się męczyłem bo chciałem porównać URL-a zamiast Title 😀 Mimo, ze były identyczne to błąd się wywalał i czytałem, że URL-e są dynamiczne zatem nie można do nich stosować assertEquals. Trzeba raczej użyć assertTrue ale w sumie można to zrobić tylko trzeba się pomęczyć trochę bardziej:

            driver.navigate().to(baseUrl);
            String currentUrl = driver.getCurrentUrl();
            driver.navigate().to(new URL("https://www.nasa.gov/"));
            driver.navigate().back();
            Assert.assertEquals(String.valueOf(driver.getCurrentUrl()), currentUrl);
    Odpowiedz
  4. Edyta Szubińska napisał

    15 lipca, 2020 o 6:46 am

    Hej
    Szukałam odpowiedzi, ale nie mogę znaleźć i utknęłam. Potrzebuję pomocy.

    package DriverMethods;
    import org.junit.Test;
    import org.junit.jupiter.api.AfterEach;
    import org.junit.jupiter.api.BeforeEach;
    import org.openqa.selenium.Dimension;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    import java.util.concurrent.TimeUnit;
    
    public class newNavigation {
    
          WebDriver driver;
    
        @BeforeEach
        public void driverSetUp() {
            System.setProperty("webdriver.chrome.driver", "src/main/resources/chromedriver.exe");
            driver = new ChromeDriver();
            driver.manage().window().setSize(new Dimension(1200, 720));
            driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
        }
        @AfterEach
        public void driverQuit() {
            driver.close();
            driver.quit();
        }
        @Test
        public void getMethod() {
            driver.get("https://www.nasa.gov/");
        }
        @Test
        public void navigate() {
            driver.navigate().to("https://www.nasa.gov/");
            driver.navigate().to("https://pl.wikipedia.org/wiki/Wikipedia:Strona_g%C5%82%C3%B3wna");
            driver.navigate().back();
            driver.navigate().forward();
            driver.navigate().refresh();
            driver.getCurrentUrl();
        }
    }
    

    Cały czas dostają taką oto odpowiedź:
    java.lang.NullPointerException
    at DriverMethods.newNavigation.getMethod(newNavigation.java:33)

    Próbowałam różnych rzeczy, ale nie wiem jak to rozwiązać.

    Będę wdzięczna za pomoc 🙂

    Odpowiedz
    • Ela Sądel napisał

      15 lipca, 2020 o 10:40 am

      Halko! Jak wpakowałam Twoje testy u siebie to mi [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

      Odpowiedz
      • Piotr Pobożniak napisał

        26 grudnia, 2020 o 8:43 pm

        Cześć,

        mam bardzo podobny problem, natomiast trochę inne objawy, gry próbuje zastosować metodykę BeforeEach i AfterEach test się nie wykonuje i wyrzuca błąd java.lang.NullPointerException

        Natomiast gdy wykorzystam po prostu Before i After test zaliczony
        mam takie same sterowniki jesli chodzi o junita i sellenium.

        package Zadanie1;

        import org.junit.After;
        import org.junit.Before;
        import org.junit.Test;
        import org.junit.jupiter.api.AfterEach;
        import org.junit.jupiter.api.Assertions;
        import org.junit.jupiter.api.BeforeEach;
        import org.openqa.selenium.WebDriver;
        import org.openqa.selenium.chrome.ChromeDriver;

        import java.util.concurrent.TimeUnit;

        public class TestNavigate1 {

        WebDriver driver;

        @BeforeEach
        public void driverSetup() {
        System.setProperty("webdriver.chrome.driver", "src/main/resources/drivers/chromedriver.exe");
        driver = new ChromeDriver();
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

        }

        @AfterEach
        public void driverClose() {
        driver.close();
        driver.quit();

        }

        @Test
        public void openWikipedia() {
        driver.get("https://pl.wikipedia.org/");
        driver.navigate().to("https://nasa.gov");
        driver.navigate().back();
        String wikiTitle = "Wikipedia, wolna encyklopedia";
        Assertions.assertEquals(wikiTitle, driver.getTitle(), "The title of the page is not: " + wikiTitle);
        driver.navigate().forward();
        String nasaTitle = "NASA";
        Assertions.assertEquals(nasaTitle, driver.getTitle(), "The title of the page is not: " + nasaTitle);

        }

        }

        Odpowiedz
        • Ela Sądel napisał

          26 grudnia, 2020 o 11:07 pm

          Halko! Problem podobny i jego przyczyna również. [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

          Odpowiedz
          • Piotr Pobożniak napisał

            27 grudnia, 2020 o 1:58 pm

            Dziękuję ! Udało się 😀

      • Anna Korab-Chmielowiec napisał

        12 lutego, 2021 o 8:35 am

        Hej,
        Miałam dokładnie ten sam problem. Zmiana importu na Twój pomogła 🙂
        Jak zrobić porządek w pom'ie? Wydaje mi się, że mam tam teraz JUNIT dwa razy.

        org.junit.jupiter
        junit-jupiter-api
        5.7.0
        test

        junit
        junit
        RELEASE
        test

        Odpowiedz
        • Ela Sądel napisał

          12 lutego, 2021 o 2:00 pm

          Halko! Akurat o czymś podobnym pisałam w newslet [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

          Odpowiedz
  5. Edyta_Sz napisał

    15 lipca, 2020 o 12:12 pm

    dzięki, działa 🙂

    Odpowiedz
  6. Tomasz Szczotkowski napisał

    17 lutego, 2021 o 5:21 pm

    Cześć,
    wydaje mi się, że kod jest poprawnie napisany, ale dostaję błąd:

    lut 17, 2021 5:18:44 PM org.junit.platform.launcher.core.DefaultLauncher handleThrowable
    WARNING: TestEngine with ID 'junit-jupiter' failed to discover tests
    java.lang.NoClassDefFoundError: org/junit/jupiter/api/parallel/ExecutionMode
    	at org.junit.jupiter.engine.JupiterTestEngine.discover(JupiterTestEngine.java:66)
    	at org.junit.platform.launcher.core.DefaultLauncher.discoverEngineRoot(DefaultLauncher.java:130)
    	at org.junit.platform.launcher.core.DefaultLauncher.discoverRoot(DefaultLauncher.java:117)
    	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:90)
    	at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:71)
    	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
    	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:220)
    	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:53)
    Caused by: java.lang.ClassNotFoundException: org.junit.jupiter.api.parallel.ExecutionMode
    	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606)
    	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168)
    	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    	... 8 more
    
    
    Process finished with exit code 0
    

    Kod:

    import org.junit.jupiter.api.AfterEach;
    import org.junit.jupiter.api.Assertions;
    import org.junit.jupiter.api.BeforeEach;
    import org.junit.jupiter.api.Test;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    
    public class Zadanie {
        WebDriver driver;
    
        @BeforeEach
        public void setupDriver(){
            System.setProperty("webdriver.chrome.driver", "src/main/resources/chromedriver.exe");
            driver = new ChromeDriver();
        }
    
        @AfterEach
        public void closeSession(){
            driver.close();
            driver.quit();
    
        }
    
        @Test
        public void navigation(){
            driver.navigate().to("www.wikipedia.pl");
            driver.get("www.nasa.gov");
            driver.navigate().back();
            String wikiTitle = "Wikipedia, wolna  encyklopedia";
            Assertions.assertEquals(wikiTitle, driver.getTitle(), "The title of the page is not:" + wikiTitle);
            driver.navigate().forward();
            String nasaTitle = "NASA";
            Assertions.assertEquals(nasaTitle, driver.getTitle(), "The title of the page is not:" + nasaTitle);
    
        };
    
    }
    
    Odpowiedz
    • Ela Sądel napisał

      17 lutego, 2021 o 9:02 pm

      Halko! Pokaż co masz w pliku pom.xml [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

      Odpowiedz
  7. Szymon Foltyn napisał

    25 lutego, 2021 o 3:54 pm

    Hello,
    Elu szybkie pytanie bo obecnie zmuszony jestem pracować na służbowym lapku 😉 i każde otwarcie chroma powoduje najpierw otwarcie SSO password login page :/ czy mogę to jakoś ominąć timeOut() albo jakimś wait() wtedy bym się logował i startuje wiki ? bo szukanie po webElement i logowanie za każdym razem to trochę za wcześnie.

    Odpowiedz
    • Ela Sądel napisał

      26 lutego, 2021 o 9:02 am

      Hej! Nie wiem w jakiej formie dostajesz to SSO ale [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

      Odpowiedz
      • Szymon Foltyn napisał

        26 lutego, 2021 o 9:06 am

        No niestety nie alerty :/ Ale ominąłem to inaczej. Używam stron w domenie .gov wtedy niewymagane jest logowanie tylko od razu odpala stronkę typu nasa.gov i na niej śmigam testy 🙂

        Niemniej dziękuję za odpowiedź i podpowiedź. Miłego weekendu

        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
Av. de las Postas 21 6 C
29014 Málaga
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