Co zrobimy?

Mamy już przygotowany projekt – czas na pierwszą linię kodu i interakcję z Selenium.

Wersja video tej lekcji

AKTUALIZACJA lekcji wideo:
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.

TIP: Wraz z instalacją Python dostajemy wiele pomocnych pakietów jednak nie Selenium. PyCharm oferuje automatyczne importy (o innych sposobach importowania dowiesz się w kolejnych częściach kursu) i prezentowane poniżej rozwiązanie zadziała dla innych zewnętrznych pakietów (czyli takich, które nie zostały dostarczone wraz z instalacją Pythona).

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.

 

TIP: Czasem podczas pisania 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ć.

20 komentarzy

    1. 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 🙂

      Krzysiek Kijas Krzysiek Kijas
      1. 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)

        Avatar Dmitry
        1. 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?

          Krzysiek Kijas Krzysiek Kijas
      1. 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/

        Krzysiek Kijas Krzysiek Kijas
  1. 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ć?

    Avatar Łukasz
    1. 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 😉

      Krzysiek Kijas Krzysiek Kijas
  2. 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)

    Avatar mko
      1. 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

        Przemek Barański Przemek Barański
  3. 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

    Avatar Adam Szeszko
        1. 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.

          Avatar Adam Szeszko
          1. 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ź 😀

            Przemek Barański Przemek Barański
          2. 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)]

            Avatar Adam Szeszko
          3. 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 😀

            Przemek Barański Przemek Barański
    1. 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!

      Krzysiek Kijas Krzysiek Kijas

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *