Powrót do: Podstawy Testów Automatycznych w Selenium i Python cz. 1 – Twój pierwszy test automatyczny
Co zrobimy?
Mamy już przygotowany projekt – czas na pierwszą linię kodu i interakcję z Selenium.
Wersja video tej lekcji
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.
Pythonowe pakiety i moduły
Warto zauważyć, że dla Pythona istniejące rozwiązania, z których chcemy skorzystać, występują pod postacią tak zwanych pakietów (ang. packages). W formie takiego pakietu pobierzemy Selenium.
Będę opisywał wybrane elementy tego pakietu a pełny opis dostępnych funkcjonalności znajdziesz w nieoficjalnej dokumentacji http://selenium-python.readthedocs.io/api.html
Z pakietu Selenium użyjemy modułu WebDriver. Moduły to takie gotowe kawałki kodu, dzięki którym nie trzeba wszystkiego pisać na nowo a wystarczy skorzystać z czyjejś ciężkiej pracy (szerzej opisujemy to w wideo).
Używamy Selenium
Czas z skorzystać z pakietu Selenium:
from selenium
czyli bierzemy (from
) z pakietu selenium
– proste nie?
Podkreślone na czerwono sugeruje, że nasze IDE nie widzi takiej paczki ponieważ wraz z instalacją Pythona takiej nie otrzymaliśmy.
Klikamy na nazwę selenium
i wciskamy kombinację klawiszy odpowiedzialną za podpowiedzi akcji naprawczych ALT + ENTER (powinna pojawić się także ikona czerwonej żarówki, którą można kliknąć i uzyskamy ten sam efekt – zobacz poniższy screen).
Wybieram pierwszą opcję – install package selenium
. Powinno rozpocząć się pobieranie pakietu co sygnalizowane jest paskiem postępu w prawej dolnej części okna IDE a następnie dostaniemy informację o powodzeniu instalacji.
import selenium
nie pojawi się popup z możliwością instalacji. Co można wtedy zrobić?
Wtedy można zainstalować pakiet selenium z ustawień projektu 😉
W takiej sytuacji wejdź w File (prawy górny róg), a następnie wybierz Settings – pojawi się okno ustawień, a tam kolejno przenawiguj do Project:demo_tests->Project Interpreter.
W tym momencie powinieneś ujrzeć okno ze wszystkimi pakietami, tak jak poniżej, ale bez pakietu selenium:
Następnie naciśnij znak plus po prawej stronie. Otworzy Ci się okno Available Packages z bardzo długą listą pakietów po lewej stronie i z opisami po lewej. Tam na górze będzie również wyszukiwarka – wpisz selenium. Na liście po prawej podświetli Ci się opcja selenium, a po prawej stronie opis tego pakietu (i obecna wersja 3.141). Następnie kliknij Install Package:
Po chwili pojawi się niewielka informacja Package ‘selenium’ installed successfully – teraz możesz zamknąć wszystkie okna ustawień, a pakiet Selenium powinien być dostępny do użycia 🙂
Po zakończonej instalacji podkreślenie powinno zniknąć co oznacza, że IDE potrafi powiązać naszą linijkę kodu, gdzie robimy import z właśnie zainstalowanym pakietem.
Następnie dokańczamy linię kodu – z pakietu selenium importujemy (import
) moduł webdriver
:
from selenium import webdriver
Piątka – napisałeś pierwszą poprawną linię kodu!
I to nie tylko linię kodu ale dodatkowo miałeś styczność z pojęciami: pakiet, moduł i ich praktycznym użyciem oraz wykorzystałeś nasze IDE do automatycznego importu pakietu. Czas na więcej kodowania – przejdź do następnej lekcji.
UWAGA: Jeśli już wcześniej miałeś zainstalowaną pakiet Selenium możliwe, że potrzebny będzie jego update (w żargonie korporacyjnym to angielskie słowo często jest używane wymiennie do słowa aktualizacja). Przejdź: (w prawym górnym rogu) File->Settings->Project:demo_tests->Project Interpreter.
Odnajdź pakiet (Package) selenium a następnie upewnij się czy wartości w Version i Latest są identyczne. Jeśli nie to kliknij linie z selenium i naciśnij niebieską strzałkę skierowaną w górę z prawej strony. Następnie OK i juz masz zaktualizowaną paczkę. Generalnie w ten sposób możesz zaktualizować każdą paczkę. Na obrazku poniżej pokazany jest nieaktualny pakiet oraz gdzie kliknąć aby go uaktualnić.
Po wpisu “from selenium” i naciśnięciu “install package selenium” , selenium nie laduje się. Mam Ubuntu 20, Python 3.9.7
Hej,
Jakie są dokładnie efekty podczas instalacji?
Czy występuje jakiś błąd?
W głównym oknie PyCharma (po wyjściu z instalacji) na dole w prawym rogu jest Event Log ( https://www.jetbrains.com/lp/pycharm-pro/static/3-error-1346fdfc83ca37af9e071569012941c0.png ) – czy są tam jakieś informacje o niepowodzeniu instalacji albo błędach?
Możesz też spróbować zainstalować pakiet selenium z terminala. W terminalu możesz spróbować użyć polecenia:
pip install selenium
Przykład instalacji pakietów z poziomu terminala opisaliśmy w lekcji:
https://jaktestowac.pl/lesson/pt1-mk5-s01-l03/#Instalacja_pakietow_w_venv
Daj proszę znać jakie są szczegóły tych operacji 🙂
Piszę: from selenium, dalej “Install package selenium”. Pojawia się okno “Administrator privileges required”. Naciskam “Instal anyway”, w dolnym prawym rogu pojawia się “Installing Packages Failed”. Error occured: non -zero exit code(126)
To wygląda na brak uprawnień do instalacji i jest związany z systemem i obowiązującą polityką uprawnień na systemie, na którym pracujesz.
Na jakim koncie się znajdujesz i czy podałeś poprawne hasło, aby uzyskać prawa do instalacji? 🤔
Próbowałeś instalować pakiet z poziomu terminala?
Tak , próbowałem. Piszę, że nieprawidłowa komanda pipinstall Selenium.
Czy w katalogu projektu masz katalog venv? Jesli nie, to dobrze – rzuć okiem na poniższe kroki:
Spróbuj wykonać:
python3 -m pip install selenium
Na Ubuntu python występował pod skrótem python3.
Chyba, że masz oddzielnie zainstalowanego pip to możesz też spróbować:
pip3 install selenium
Jeśli nadal dostaniesz komunikat o błędzie to rzuć okiem na artykuł dotyczący instalacji narzędzia pip na Ubuntu:
https://linuxize.com/post/how-to-install-pip-on-ubuntu-20.04/
Witam
Zatrzymuję się na kroku z próbą pobrania pakietu Selenium. Niestety nie mam dostępnej opcji Install selenium package. Pakiet nie był instalowany wcześniej.
Prośba o pomoc, co mogę zrobić?
Hej,
Rozumiem, że nie pojawia Ci się ten mały popupu po napisania
install selenium
, prawda? 😉 Faktem jest, że ten popup czasem po prostu nie chce się pojawić…W takim razie wejdź proszę w File (prawy górny róg), a następnie wybierz Settings – pojawi się okno ustawień, a tam kolejno przenawiguj do Project:demo_tests->Project Interpreter.
W tym momencie powinieneś ujrzeć okno ze wszystkimi pakietami (dokładnie takie samo jak powyżej w sekcji Uwaga). Następnie naciśnij znak plus po prawej stronie. Otworzy Ci się okno Available Packages z bardzo długą listą pakietów po lewej stronie i z opisami po lewej. Tam na górze będzie również wyszukiwarka – wpisz selenium. Powinna podświetlić CI się pakiet selenium, a po prawej stronie jego opis (i obecna wersja 3.141). Następnie kliknij Install Package.
Po chwili pojawi się niewielka informacja Package ‘selenium’ installed successfully – teraz możesz zamknąć wszystkie okna ustawień, a pakiet Selenium powinien być dostępny do użycia 🙂
Daj proszę znać czy Ci się udało 🙂
UPDATE: zaktualizowałem lekcję o TIP z opisem instalacji i screenami 😉
Hej,
próbuje zainstalować webdrivera ale dostaję komunikat błędu:
ERROR: Could not find a version that satisfies the requirement webdriver (from versions:
none)
ERROR: No matching distribution found for webdriver
W ustawieniach Pycharm mam dziwną sytuację – zaktualizowałem (update) Selenium i setuptools. ale Version dla Selenium mam wyższe (4.0.0.a3) niż dla Latest version (3..141.0)
Update Chrome – Wersja 78.0.3904.70
Pobrany nowy chromedriver (czy katalog w którym go zapisujemy ma znaczenie?)
Upgrade pycharm (pip,selenium,setuptools)
dalej ten sam komunikat błędu
Hej
Wywołałem tę sytuację sztucznie. Przeszedłem do widoku PyCharm: File->Settings->Project:demo_tests->Project Interpreter. W tym widoku jest dostępna nowa opcja – ikona oka (Show Early Releases) z prawej strony nazw paczek. Jak ją naciśniesz to pojawia się widok wersji, które nie są jeszcze oficjalne.
Następnie zaktualizowałem do wersji “Early Releases” paczkę Selenium wybierając ją i używając ikonki trójkąta. z prawej
Potem wyłączyłem oko (czyli wspomnianą ikonę z prawej strony). No i mamy niemiłą sytuację z posiadaniem nieoficjalnej wersji Selenium. i mniejszej wersji jako Latest.
Proponuję w tym widoku klknąć na wiersz w którym napisane jest Selenium i użyc przycisku minusa z prawej strony. Pamiętaj aby ikona oka była odznaczona (czyli nie miała tła).
Następnie po udanym odinstalowaniu Selenium naciśnij + , wpisz Selenium w wyszykiwarkę u góry – i odnaleziona paczka podświetli się na niebiesko. Kliknij u dołu Install Package.
Poczekaj na info, że instalacja się udała i zamknij okno wyszukiwania i instalowania paczek.
Paczka Selenium powinna być we właściwej wersji – czyli obecnie 3.141.0
Daj znać czy jest ok 😀
Pozdro
Hej,
Zaktualizowałem Wedrivera do wersji Chrome 76.0.3809.132
Wrzuciłem to właściwego folderu i po uruchomieniu kodu dostaje info:
“Traceback (most recent call last):
File “C:/Users/aszeszko/PycharmProjects/demotest/auto_test_1.py”, line 3, in
driver = webdriver.Chrome(executable_path=r’C:\A TestFiles\chromedriver.exe’)
File “C:\Users\aszeszko\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\chrome\webdriver.py”, line 81, in __init__
desired_capabilities=desired_capabilities)
File “C:\Users\aszeszko\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”, line 157, in __init__
self.start_session(capabilities, browser_profile)
File “C:\Users\aszeszko\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”, line 252, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File “C:\Users\aszeszko\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”, line 321, in execute
self.error_handler.check_response(response)
File “C:\Users\aszeszko\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py”, line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: session not created
from disconnected: unable to send message to renderer
(Session info: chrome=76.0.3809.132)”
Process finished with exit code 1
Pls help 🙂
Pzdr
A w jakiej wersji masz Chrome na kompie? Może małe uaktualnienie pomoże 😀
Po aktualizacji Chrome jest ten sam efekt.
Właściwie to ten bład pojawia się w kolejnej lekcji kiedy staram sie uruchomić przeglądarkę:
from selenium import webdriver
driver = webdriver.Chrome(executable_path=’C:\ATestFiles\chromedriver.exe’)
driver.get(‘https://demobank.jaktestowac.pl/logowanie_etap_1.html’)
Włącz się przeglądarka po czym sie wyłącza i zwraca komunikat błedu o treści, którą podałem wcześniej.
Hmm
Proszę podaj mi dokładną wersję swojego Chrome i końcówkę logu błędu która zawiera wpis w stylu “(Session info: chrome=76.0.3809.132)”.
Dodatkowo spróbuj wrzucić chromedriver.exe do głównego katalogu projektu (czyli tam gdzie masz plik auto_test_1.py) a w inicjacji drivera wpisać tylko:
driver = webdriver.Chrome(executable_path=’chromedriver.exe’)
Dodatkowo dodaj linijki (do obecnego skryptu zaraz na początku pliku) które powiedzą mi więcej o Selenium i Pythonie -i podaj proszę co się pojawi w wyniku ich wykonania
import selenium
print(selenium.__version__)
import sys
print(sys.version)
Czekam na odpowiedź 😀
Dziękuje za szybką odpowiedź! i sorki za zwłokę 😀
(Session info: chrome=77.0.3865.90)
Wersja 77.0.3865.90 (Oficjalna wersja) (64-bitowa)
C:\Users\aszeszko\AppData\Local\Programs\Python\Python37-32\python.exe C:/Users/aszeszko/PycharmProjects/demo_tests/auto_test_1.py
3.141.0
3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 19:29:22) [MSC v.1916 32 bit (Intel)]
Przez ostatnie dni kilka razy próbowałem ogarnąć twój temat i co mogło pójść nie tak – niestety nie ma na niego prostej odpowiedzi.
Zorganizowałem sobie wszystkie zależności jak u Ciebie i nie mam wspomnianych problemów.
Mam kilka pomysłów:
Po pierwsze, dla mnie to nie miało znaczenia ale:
Zrestartuj system, podmień chromedriver jeśli tego jeszcze nie zrobiłeś (twoja przeglądarka to 77 a driver to 76 (wynik ostatniego loga z pierwszego posta))
2. Czy nie masz jakiejś usługi która modyfikuje adresy wewnętrzne (localhost, 127.0.0.1)?
3. Żadne z powyższych – robimy calla na Skype bo nie pozwolimy aby taki dziwny problem nas powstrzymał 😀 – napisz na nasz mail kontakt[małpa]jaktestowac.pl i wrzuć namiary na siebie.
Pozdro i mam nadzieję, że ogarniemy ten osobliwy problem 😀
Ubuntu 16.04.6+Pycharm 2019.1+Python3.5
Podczas próby wykonania tej lekcji leciał błąd przy instalacji selenium.
W ustawieniach Pycharma widziałem komunikat:
“Python packaging tools not found. Install packaging tools.”
Na stackoverflow znalazłem rozwiązanie aby zainstalować pipa:
sudo apt install python3-pip
I teraz działa! 🙂
https://stackoverflow.com/questions/43567996/pycharm-python-packaging-tools-not-found/43572801
Doskonale! 😀
Na linuxie jest kilka subtelnych różnic (w stosunku do Win OS) odnośnie wymaganych pakietów etc. W odległych planach mamy także opisanie tego jak pisać testy na Ubuntu 🙂
Pozdrawiam!