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.

 

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ź: PyCharmFile->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ć.

12 komentarzy

  1. 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
  2. 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
  3. 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

    Avatar Krzysztof Glinka
    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 email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *