• 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 3. Nawigacja pomiędzy stronami

Strona główna > Kursy > Kurs Selenium w Javie > Selenium 3. Nawigacja pomiędzy stronami

W tej lekcji pokażę Ci w jaki sposób nawigować się pomiędzy stronami w Selenium.

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

Nawigacja pomiędzy stronami to akcje takie jak na przykład przejście na daną stronę albo cofnięcie się na poprzednią. Na tej lekcji dowiesz się jak mówić do Selenium, żebyśmy mogli za jego pomocą wykonać następujące akcje:

  • przejść na podaną stronę,
  • odświeżyć stronę,
  • przejść na poprzednią stronę z historii przeglądarki,
  • przejść na następną stronę z historii przeglądarki.

Chcesz się bardziej wgryźć w metody nawigacyjne? Link do dokumentacji Selenium, odpowiadający tym zagadnieniom znajdziesz tutaj: WebDriver.Navigation.

Kod

package DriverMethods;

import org.junit.jupiter.api.AfterEach;
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 NavigationAndClosing {

    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 driverQuit(){
        driver.close();
        driver.quit();
    }

    @Test
    public void getMethod(){
        driver.get("http://google.pl");
    }

    @Test
    public void navigate(){
        driver.navigate().to("https://google.pl");
        driver.navigate().to("https://www.amazon.com");
        driver.navigate().back();
        driver.navigate().forward();
        driver.navigate().refresh();
        driver.getCurrentUrl();
    }

}

 

Reader Interactions

Komentarze

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

Komentarze

  1. Piotr Zoladziejewski napisał

    14 września, 2019 o 7:04 pm

    Hej,
    w pierwszych dwoch lekcjach
    Przygotowanie środowiska programistycznego (DARMOWA LEKCJA)
    Inicjalizacja drivera i demo Selenium (DARMOWA LEKCJA)
    pracujesz na projekcie 'Start' w lokalizacji d:\dev\IntelliJ\start
    Natomiast w lekcji trzeciej rozumiem ze pracujemy juz na innym projekcie 'SeleniumTrainingBasics' d:\dev\IntelliJ\SeleniumTrainingBasics

    Pytanie czy ustawienia pierwszego i kolejnego projektu się różnią?'

    Odpowiedz
    • Ela Sądel napisał

      14 września, 2019 o 9:40 pm

      Hej! Ustawienia się nie różnią, w POMie jest t [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

      Odpowiedz
  2. d.piaskowska93 napisał

    18 września, 2019 o 9:32 pm

    Co do komentarza Piotra - też się chwilę musiałam nad tym zastanowić. Przydałaby się też możliwość ściągnięcia pliku danej klasy, żeby w razie czego sobie porównać/przekopiować jeśli coś nie działa 🙂

    Odpowiedz
    • Ela Sądel napisał

      19 września, 2019 o 8:48 am

      Wezmę to pod uwagę jak będę robić kolejną it [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

      Odpowiedz
  3. Tomasz Paczkowski napisał

    17 grudnia, 2019 o 9:34 am

    Nie potrafię stworzyć tak, żeby było jak na filmie.
    Na samej górze jest package a nie class i zabardzo nie umiem tego rozkminić, tak samo z nazwami projektów.
    No i pytanko odnośnie:
    Jak zaimportować  Dimension
    Również nie rozumiem zabardzo jak dojść do sytuacji java/DriverMethods/NavigattionAndClosing?
    Proszę o wyjaśnienie

    Odpowiedz
    • Elżbieta Sądel napisał

      17 grudnia, 2019 o 1:26 pm

      Halko! Żeby dojść do java/DriverMethods/Navigat [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

      Odpowiedz
  4. Karol Dolega napisał

    18 stycznia, 2020 o 1:15 pm

    Cześć,
    poniższy test mi nie działa. Jak go naprawić?

    package DriverMethods;
    
    import org.junit.jupiter.api.Test;
    import org.openqa.selenium.Dimension;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    
    public class NavigationAndClosing {
        @Test
        public void getMethod(){
            System.setProperty("webdriver.chrome.driver", "src/main/resources/chromedriver.exe");
            WebDriver driver = new ChromeDriver();
            driver.manage().window().setSize(new Dimension(width: 1280, height: 720 ));
    
    
            driver.get("http://google.pl");
    
            driver.quit();
    
    
        }
    }
    

    Error:(13, 80) java: ';' expected
    Error:(13, 61) java: ')' expected
    Error:(13, 77) java: not a statement

    Edit:
    Działa. Wpisałem słowa "width" i "height" ręcznie. Wystarczyło wpisać liczbę. Podpowiedź (dymek), która pojawiła się na górze była dla mnie myląca.

    Odpowiedz
  5. ELa napisał

    31 marca, 2020 o 8:20 pm

    Hej. Nie działa mi ten test niestety. Pojawia mi się poniższy błąd. Nie mogę sobie z nim poradzić. Poprawiałam kod już kilka razy ale ciągle jest to samo. Na samym końcu dorzuciłam jeszcze kod.
    java.lang.NullPointerException
    at FirstTestSelenium.getMetod(FirstTestSelenium.java:24)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:567)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:134)
    at org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:597)
    at org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:173)
    at org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46)
    at org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:816)
    at org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:146)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1507)
    at org.testng.TestRunner.privateRun(TestRunner.java:766)
    at org.testng.TestRunner.run(TestRunner.java:587)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:384)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:378)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:337)
    at org.testng.SuiteRunner.run(SuiteRunner.java:286)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1187)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1109)
    at org.testng.TestNG.runSuites(TestNG.java:1039)
    at org.testng.TestNG.run(TestNG.java:1007)
    at com.intellij.rt.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:66)
    at com.intellij.rt.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:110)

    public class FirstTestSelenium {
    WebDriver driver ;

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

    @AfterEach
    public void driveQuit (){
    driver.quit();
    }
    @Test
    public void getMetod (){
    driver.get("https://google.com/");
    }
    @Test
    public void navigate (){
    }
    }

    Odpowiedz
    • Ela Sądel napisał

      31 marca, 2020 o 9:00 pm

      Porównaj, proszę, kod z tym co jest pod filmem ( [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

      Odpowiedz
      • ELa napisał

        31 marca, 2020 o 9:44 pm

        Faktycznie, miałam inny import, który odpowiada za odpalenie testu. Dzięki:)

        Odpowiedz
  6. Ernest Jamka napisał

    27 maja, 2020 o 10:08 pm

    Z tego co kojarzę jeszcze różnica pomiędzy navigate() i get() jest taka, że przy get() tracimy historię gdyż nie jest to przechodzenie między stronami "zwykłego użytkownika" zatem też cookiesów nie będzie zapisywać. No i chyba navigate() jest trochę szybszy chociaż w testach to drugorzędna kwestia 😀

    Odpowiedz
    • Ela Sądel napisał

      28 maja, 2020 o 9:40 am

      Halko! Mówię co widzę w kodzie, a w kodzie widz [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.

      Odpowiedz
      • Ernest Jamka napisał

        28 maja, 2020 o 10:42 am

        Kiedyś tego szukałem bo mnie to zastanawiało i między innymi na stackoverflow się natknąłem na wpis:
        https://stackoverflow.com/questions/33865618/difference-between-webdriver-get-and-webdriver-navigate-to-in-the-case-of-ur/33868976#33868976
        Z tego co wyczytałem jeszcze tutaj https://www.seleniumeasy.com/selenium-tutorials/difference-between-webdriver-get-and-navigate
        To get czeka na załadowanie strony no i nie ma opcji w nim na .forward .backward ale skoro nie wynika to z kodu bezpośrednio to w sumie ciężko powiedzieć skąd to. Może przez to, że navigate wywołuje u siebie get to nie sprawdza już czy request w nim się w pełni zakończył zatem nie czeka na pełne załadowanie strony? Ogólnie raczej będę stosować navigate().to() dla tych dodatkowych opcji na poziomie składni ale ciekawe to!

        Odpowiedz
        • Ela Sądel napisał

          28 maja, 2020 o 12:08 pm

          Chyba mówimy trochę o czymś innym. Ja mówię o [...] 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
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