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 41. Zadanie: metody na WebElementach

Czas przećwiczyć to, co przerobiliśmy wspólnie na ostatnim filmie, czyli metody na WebElementach. Przed Tobą zadanie, w którym konieczne będzie pobranie różnych informacji o elementach.

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.

Mimo, że tłumaczę to na filmie, to do tego zadania mogą Ci się przydać dodatkowe informacje o grupowaniu asercji w JUnit. Link do dokumentacji: Assertions.

Polecenie do zadania

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Rozwiązanie

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

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Wsparcie merytoryczne

Nie masz dostępu do wsparcia merytorycznego dla tego kursu. Wykup dostęp albo zaloguj się, by móc zadawać pytania.

  1. U mnie za każdym razem test przechodzi na fail (chome sie otwiera), nie ważne jaką asercje ustawię, w test results mam

     
    Starting ChromeDriver 86.0.4240.22 (398b0743353ff36fb1b82468f63a3a93b4e2e89e-refs/branch-heads/4240@{#378}) on port 17193
    Only local connections are allowed.
    Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
    ChromeDriver was started successfully.
    lis 11, 2020 9:20:25 PM org.openqa.selenium.remote.ProtocolHandshake createSession
    INFO: Detected dialect: W3C
    

    Cofnę sie o kilka lekcji, może cos mam zle w ustawieniach, ale jak patrze po kodzie jest taki sam..

    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.*;
    import org.openqa.selenium.chrome.ChromeDriver;
    
    import java.util.concurrent.TimeUnit;
    
    public class test1 {
        WebDriver driver;
        By demoStoreBar = By.cssSelector("a[class*='dismiss-link']");
    
    
        @BeforeEach
        public void setup() {
            System.setProperty("webdriver.chrome.driver", "C:/Users/Mariusz/Desktop/selenium/chromedriver/chromedriver.exe");
            WebDriver driver = new ChromeDriver();
            driver.manage().window().maximize();
            //driver.manage().window().setSize(new Dimension(1295, 730));
            //driver.manage().window().setPosition(new Point(10,40));
            driver.manage().timeouts().pageLoadTimeout(6, TimeUnit.SECONDS);
            driver.navigate().to(" https://fakestore.testelka.pl/metody-na-elementach/");
            driver.findElement(demoStoreBar).click();
        }
    
        @AfterEach
        public void driverQuit() {
            driver.close();
            driver.quit();
        }
    
        @Test
        public void checkElementsStateTest() {
            // driver.findElement(By.id("woocommerce-product-search-field-0")).click();
            WebElement mainPageButton = driver.findElement(By.cssSelector("input[name='main-page']"));
            Assertions.assertFalse(mainPageButton.isEnabled(), "Main page button is not disabled.");
        }
    }
    
    Odpowiedz
  2. Tak poleciał wyjątek java.lang.NullPointerException, tylko jest długaśny.. przepisałem to co mi poleciało na czerwono w konsoli, może pomoże 🙂
    java.lang.NullPointerException
    at test1.checkElementsStateTest(test1.java:36)
    at java.base/java.utilArrayList.forEach(Arraylist.java:1540)
    at java.base/java.utilArrayList.forEach(Arraylist.java:1540)
    Suppressed: java.lang NullpointerException
    at test1.driverQuit(test1.java:29)
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
    ... 41 more

    Odpowiedz
  3. Czy sprawdzanie koloru w 3 buttonach na raz ma sens? I czy jeśli jeden będzie się różnił, to test się wywali? Stworzyłem coś takiego (przy okazji odświerzając xpathy):
    driver.findElement(By.xpath(".//p//a[@name='windsurfing' or @name='climbing' or @name='yoga']")).getCssValue("background-color");

    Odpowiedz