Czas przećwiczyć to, co przerobiliśmy wspólnie w kilku ostatnich filmach. Przed Tobą zadanie z interakcji z WebElementami.
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.
Czy selenium widzi tylko to co jest na ekranie?
Pierwszy test zakończył się okej, a drugi nie. W drugim przypadku button faktycznie nie jest widoczny na ekranie. O co chodzi? Różnią się tylko wielkością okna.
a ten nie przeszedł:
Halko! U mnie przechodzą oba. Żeby Ci jakoś pom [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.
Moja kryształowa kula* mówi, że inny element pr [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.
Aha, czyli jednak rozmiar okna ma znaczenie w tym przypadku : )
Widziałam ten niebieski pasek i widziałam, że Selenium nie widzi buttona i zastanawiałam się czy to tak powinno działać. Jeśli jest to prawidłowe działanie no to super : )
Tak, działa w sposób oczekiwany 😀 Ogólnie czę [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.
Dzięki dziewczyny za komentarze! U mnie pojawiał się ten błąd przy testowaniu rejestracji i długo nie mogłam dojść do tego co się dzieje. Po zwiększeniu okna przeglądarki test przeszedł 😉 i wiem, że automatyzacja rejestracji jednego użytkownika jest trochę bezsensu, ale to praktyka czyni mistrza, czy jakoś tak 😀
No tak, to faktycznie był skrót myślowy : ) obecnie mam przerwę od pracy i wypadłam z rytmu bycia dosłownym w 100% ; P
Cześć,
Poradzisz proszę?
Mam póki co mam następujący problem z poniższym kodem - assercja nie przechodzi, ponieważ pobierany wpisany adres email jest pusty. Powinnam użyć czegoś innego niż getText()? I tak, wiem, że assercja ta nie ma sensu za bardzo ale chciałam poćwiczyć pobieranie wartości 😉
driver.findElement(By.id("reg_email")).sendKeys("anna.mar@gmail.com");
driver.findElement(By.id("reg_password")).sendKeys("t&^$oo098est1p@ss");
System.out.println("x " + driver.findElement(By.id("reg_email")).getText());
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
Assertions.assertEquals("anna.mar@gmail.com", driver.findElement(By.id("reg_email")).getText(), "email address is not correct");
driver.findElement(By.cssSelector("button[name=\"register\"]")).click();
Halko! Wystarczy, że zajrzysz do zakładki "Eleme [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.
@Test
public void should_correctly_log_in(){
driver.findElement(By.xpath(".//input[@id=\"username\"]")).sendKeys(username);
driver.findElement(By.xpath(".//input[@id=\"password\"]")).sendKeys(password);
driver.findElement(By.xpath(".//button[@name=\"login\"]")).click();
List username = driver.findElements(By.xpath(".//*[@class=\"woocommerce-MyAccount-content\"]//strong"));
List username_string = new ArrayList();
for(WebElement e : username){
username_string.add(e.getText());
}
System.out.println(username_string);
Assertions.assertEquals("lukaszpilch31", username_string.get(0), "First usage of Username is not the same as expected");
Assertions.assertEquals("lukaszpilch31", username_string.get(1), "Second usage of Username is not the same as expected");
}
Napisałem taki happy path case do zalogowania się i jako że w dwóch miejscach po zalogowaniu się jest element z atrybutem strong w którym znajduje się username to zrobiłem dwie asercje na liście elementów. Test przechodzi, ale czy taki test case jest poprawnie napisany czy lepiej sprawdzać w sposób opisany w rozwiązaniu?
Halko! Powiedziałabym nawet, że częściej się [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.