Powrót do: Podstawy Testów Automatycznych w Selenium i Python cz. 1 – Twój pierwszy test automatyczny
Mamy automatyczny TEST 🙂
W wideo, w części “Zadania”, umieściliśmy przykładowe rozwiązania zadań, których opis znajdziesz na końcu tej lekcji. Proponujemy najpierw podjąć samodzielną próbę rozwiązania zadań a następnie zweryfikowania ich z materiałem video.
W związku z odświeżeniem tekstu całej serii kursów – lekcje wideo mogą okazać się odrobinę nieaktualne. Pracujemy nad tym – mimo to pozostawiamy wersję wideo gdyż pokazane tam kroki są generalnie poprawne.
W wyniku ciężkiej pracy otrzymaliśmy bardzo podstawowy test (Smoke test) sprawdzający czy pod danym adresem znajduje się strona o określonym tytule. Bonusowo przygotowaliśmy przy tym całe środowisko skonfigurowane do pisania i uruchamiania testów oraz masę nowej wiedzy :).
Były pakiety, moduły, metody, funkcje, zmienne i instrukcje oraz traceback, print, konsola, IDE, assert i wiele innych. Naprawdę sporo wiedzy – kolejne kursy utrwalą te pojęcia więc nie martw się, jeśli jeszcze swobodnie nie posługujesz się terminami wspomnianymi w poprzednich lekcjach. Zobaczmy jak powinien wyglądać cały kod w IDE:
from selenium import webdriver driver = webdriver.Chrome(executable_path=r"C:\TestFiles\chromedriver.exe") driver.get('https://demobank.jaktestowac.pl/logowanie_etap_1.html') title = driver.title print(title) assert 'Demobank - Bankowość Internetowa - Logowanie' == title driver.quit()
Teraz Ty
Doszliśmy do końca pierwszej części ale to nie koniec wyzwań dla Ciebie na dziś. Jako automatyk dostajesz dwa zlecenia:
- Rekruter chce sprawdzić, że nie tylko potrafisz przepisać kod z tutoriala, więc prosi Ciebie, abyś przetestował stronę wylosowaną przez https://www.discuvver.com/ (kliknij Take me to a useful website!).
Aktualizacja: 2021: Powyższa strona zdaje się nie działać, dlatego możemy również polecić https://theuselessweb.com/, która również zwraca podobną losową stronę 🙂
- Znany polityk musi szybko “zniknąć” prywatną stronę z internetów i prosi Ciebie o zakodzenie automatu sprawdzającego czy strona xxxstwory.pln na pewno się nie wyświetla. Czy za pomocą asercji i pobranego tytułu jesteśmy w stanie to sprawdzić? Jeśli masz problemy z tym zadaniem zobacz końcówkę wideo na początku tej lekcji.
http://www.discuvver.com/ chyba już nie działa, przynajmniej dzisiaj nie mogę tej strony otworzyć 🙁
Hej,
Faktycznie… wrzucę poprawkę do lekcji. Dzięki za zgłoszenie!
W zamian możemy zaproponować jeszcze: https://theuselessweb.com/ która działa na podobnej zasadzie 🙂
Cześć, mam pytanie do zadania 2:
W przypadku gdy robię to 1:1 jak w proponowanym rozwiązaniu to w moim przypadku pojawia się exception
selenium.common.exceptions.WebDriverException: Message: unknown error: net::ERR_NAME_NOT_RESOLVED
(Session info: chrome=86.0.4240.183).
Aczkolwiek poradziłem sobie dodając obsługę wyjątku oraz zmieniając assercję związaną z title na asercje z wyszukiwaniem konkretnego tekstu
Moje pytanie jest następujące czy takie rozwiązanie jest ok czy coś byście zmienili. Zastanawiam się czy lepiej wyszukiwać obiekt po id czy xpath.. Wiem że zakres użytych funkcji trochę wykracza poza zakres tej lekcji ale będę wdzięczny za odpowiedz 🙂
Hej,
Łapanie wyjątku w tym przypadku to dobry pomysł i kierunek 😉
Ja jednakże poszedłbym w coś prostszego 😉
Pominąłbym sprawdzanie wartości
error_message
wyświetlane w przeglądarce – wiadomość jest zależna od języka i w przypadku np. angielskiego test nie przejdzie. U mnie był ten przypadek, gdyż mam system i wszystkie aplikacje ustawione po angielsku 😀 Dodatkowo strona, która się wyświetla, jest stroną przeglądarki i myślę, że można pominąć zbieranie z niej elementów. Jeśli już mielibyśmy zczytywać elementy – to wybrałbym po ID (jeśli takowe jest dostępne). ID są odporne na zmiany w strukturze strony… chociaż czasem XPath też się przydaje – jak nie ma ID 😉Skupiłbym się na np. typie wyjątku i nazwie błędu jaki się spodziewamy – w tym przypadku
WebDriverException
oraz treściERR_NAME_NOT_RESOLVED
. W przypadku innych typów błędów – tutaj można go rzucić dalejraise ex
.W dalszych lekcjach pakujemy takie skrypty w klasy testowe i metody testy – tam moglibyśmy skorzystać z modułu
unitetst
i metodyassertRaises
. Służy ona do testowania funkcji, które zwracają wyjątki.Pozdrawiam,
K
Cześć, właśnie skończyłam drugie zadanie, u mnie również test wyszedł pozytywny. Ale mimo że tytuł się nie wyświetlał, to assert porównałam do ciągu pustego ==” i przeszło. Proszę o podpowiedź czy tak to powinno wyglądać ?
Hej Monika🖐
Drugie zadanie polegało na wejściu na nieistniejącą stronę. W takim przypadku w tytule (zakładce) wyświetla się adres strony. Czyli porównanie otrzymanego adresu strony z pustym ciągiem znaków powinno dać zdecydowanie negatywny rezultat np:
Taki test daje negatywny wynik. No bo
title
zawiera zdecydowanie wartość xxxstwory.pln.Sprawdź jeszcze dokładnie czy nie przypisujesz do zmiennej
title
np pustego stringa etc i czy w asercji na pewno porównujesztitle == ""
Daj znaka jak poszło 😁
Super szkolenie. Bardzo pomocne przy konfiguracji selenium python i pycharm, oraz podstawowe komendy. Dziękuję bardzo
Bardzo nam miło w zespole czytać takie opinie – mamy nadzieję, że automatyzacja pójdzie pełną parą 😀
Gdyby nie wasze lekcje to nigdy bym się nie dowiedział jak to wygląda 🙂 zaczynam numer 2 dzięki wielkie za waszą ciężką pracę!
Dzięki za pozytywne słowa – nie ustawaj w nauce i rozwoju gdyż to przynosi w życiu świetny zwrot 🙂