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 2. Inicjalizacja drivera i demo Selenium

W tej lekcji pokażę Ci jak zainicjalizować drivera. Zobaczysz także krótkie demo Selenium.

Zmiana zachowania w DEMO

Poniższe demo, którego nie ma potrzeby przepisywać (jeszcze się nakodzisz przy kolejnych filmach i zadaniach, to jest tylko demo :)), nie zadziała przy obecnym zachowaniu strony Google. Teraz doszło okno informujące o ciasteczkach, które blokuje możliwość wykonania jakiejkolwiek akcji na stronie. Rozwiązanie, czyli zamknięcie tego okna, nie jest zadaniem prostym bo wymaga już umiejętności obsłużenia ramki. Ta lekcja pojawi się w module Wyższa Szkoła Jazdy.

Inicjalizacja drivera: linki i materiały

Żeby móc korzystać z Selenium w naszych testach i móc komunikować się z przeglądarką, potrzebny Ci będzie obiekt klasy implementującej interfejs WebDriver. Klasa implementująca będzie Ci potrzebna właśnie dlatego, że WebDriver jest interfejsem, co uniemożliwia inicjalizację obiektów wprost z WebDrivera.

Selenium dostarcza kilka klas implementujących ten interfejs przystosowanych do obsługi najpopularniejszych przeglądarek. W tym kursie będziemy korzystać z przeglądarki Chrome, a więc do inicjalizacji drivera użyjemy klasy ChromeDriver.

Oprócz obiektu klasy ChromeDriver potrzebujemy także pliku chromedriver.exe, który umożliwi komunikację z przeglądarką. Plik ten możesz możesz pobrać z tej strony.

Kod

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class FirstTest {
    @Test
    public void demoTest(){
        System.setProperty("webdriver.chrome.driver","src/main/resources/chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.manage().window().setSize(new Dimension(1295, 730));

        driver.navigate().to("https://google.pl");
        WebElement searchField = driver.findElement(By.cssSelector("[title='Szukaj']"));
        String searchEntry = "wszechświaty równoległe";
        String title = "Wieloświat – Wikipedia, wolna encyklopedia";

        searchField.sendKeys(searchEntry);
        searchField.submit();
        driver.findElement(By.xpath(".//*[text()='"+ title +"']")).click();

        WebDriverWait wait = new WebDriverWait(driver, 5);
        wait.until(ExpectedConditions.titleIs(title));

        String entryURL = "https://pl.wikipedia.org/wiki/Wielo%C5%9Bwiat";
        Assertions.assertEquals(entryURL, driver.getCurrentUrl(), "URL is not correct");
    }
}

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ść w katalogu main masz takie coś jak 'resources' jak to stworzylas i jak dodajesz tam chromedrivera??

    Jak wybieram new -resources to nie moge tam nic dodac. Wytłumacz to proszę.

    Odpowiedz
  2. Cześć 🙂
    Pomimo zastosowania się do kroków związanych z pobraniem chromedrivera po starcie testu pojawia się komunikat:
    java.lang.IllegalStateException: The driver executable does not exist: C:\Users\avipo\IdeaProjects\start1\src\main\resources\chromedrive.exe
    Jakaś podpowiedź dlaczego tak jest i co zrobić żeby test się odpalił 🙂 ?
    ( używam chroma: Wersja 80.0.3987.132 (Oficjalna wersja) (64-bitowa), ściągnęłam: ChromeDriver 80.0.3987.106 )

    Odpowiedz
  3. Hej u mnie w dalszym ciągu pojawia się poniższy błąd. Dodałam set.property oraz ścieżkę ale ciągle jest to samo. Czy mogłabyś mi coś podpowiedzieć skąd ten błąd? Pozdrawiam
    java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://chromedriver.storage.googleapis.com/index.html.

    Odpowiedz
  4. Ja miałem błąd przy próbie odpalenia
    "Error:java: release version 5 not supported"
    Ale trzeba było dodać w POMie

     
            11.0.6
            11.0.6
         
    

    Gdzie 11.0.6 oznacza wersję Javy i pomogło ; )

    Odpowiedz
  5. Cześć, przy próbie odpalenia testu pojawia się poniższy błąd. Czy mogłabyś podpowiedzieć jak można rozwiązać ten problem? Pozdrawiam

    Starting ChromeDriver 92.0.4515.107 (87a818b10553a07434ea9e2b6dccf3cbe7895134-refs/branch-heads/4515@{#1634}) on port 2927
    Only local connections are allowed.
    Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
    ChromeDriver was started successfully.

    org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: exited normally.
    (unknown error: DevToolsActivePort file doesn't exist)
    (The process started from chrome location C:\Program Files\Google\Chrome\Application\chrome.exe is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
    Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
    System info: host: 'DESKTOP-O8OS0HB', ip: '192.168.0.122', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '13.0.2'

    https://snipboard.io/6qNDEg.jpg

    Odpowiedz