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"); } }
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ę.
Halko! Nie dodaję tego resources w ogóle - mam t [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.
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 )
Halko! Zaczęłabym od sprawdzenia, czy pod tą ś [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.
ooo nie kompletnie tego nie zauważyłam a wielokrotnie sprawdzałam czy mam dobrze 🙂 czasem się zdarza taki głupi błąd 🙂 Dziękuję . Teraz działa 🙂
Nie ma sprawy, mi się bardzo często zdarza i lit [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.
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.
A pokaż kod 🙂 [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;
public class FirstTestSelenium {
@Test
public void demoTest() {
System.setProperty("WebDriver.chrome.driver","src/main/resources/chromedriver.exe");
WebDriver driver = new ChromeDriver();
Wielkość znaków ma znaczenie, powinno być webd [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.
Ok, poprawiłam w jakimś stopniu zadziałało przeglądarka się otworzyła i od razu zamknęła.
Zacznij od porównania na spokojnie kodu. Jeżeli [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.
Już jest wszystko dobrze. Miałam wyższą wersję chormedrivera niż przeglądarki. Dzięki za szybką pomoc.
Ja miałem błąd przy próbie odpalenia
"Error:java: release version 5 not supported"
Ale trzeba było dodać w POMie
Gdzie 11.0.6 oznacza wersję Javy i pomogło ; )
Halko! W poprzedniej lekcji pojawił się