Selenium w embedded (#1) – instalacja na Raspberry Pi

Selenium w embedded (#1) - instalacja na Rapberry Pi

Poziom trudności
2/5

Pewnie się zastanawiasz: po co to komu, a na co to? Czasem chcemy po prostu porównać jakieś dane z webowego panelu sterownia naszego urządzenia. Często też używamy np. router’ów, w których potrzebujemy coś wybrać lub zmienić, podczas naszych testów.

Instalacja Selenium

Poniżej opisuję jak zainstalować Selenium na naszym Raspberry Pi przy użyciu Python’a. Po instalacji nie będzie wymagane od nas posiadanie pulpitu, gdyż będzie on wirtualizowany za pomocą xvfb. Zacznijmy więc od instalacji biblioteki Selenium za pomocą aplikacji pip3:

pip3 install selenium

I z perspektywy użytkownika na tym powinien skończyć się ten artykuł. W programowaniu jak w życiu, niestety nie wszystko idzie po linii najmniejszego oporu. Po zainstalowaniu samej biblioteki Selenium będziemy potrzebowali jeszcze kilku dodatkowych rzeczy. Selenium korzysta z geckodriver. Jest to sterownik używający API do komunikacji z przeglądarką Chrome. Najnowszą wersję znajdziecie na stronie:

Przeglądarka Firefox

Firefox korzysta z geckodriver. Jest to sterownik używający API do komunikacji z przeglądarką Chrome. Najnowszą wersję znajdziecie na stronie:

Dla naszego Raspberry odpowiednią wersją geckodriver’a będzie linux64. Skopiuj paczkę ze strony na swoje RPi. W moim przypadku jest to /home/pi/gecko. Następnie przejdź do folderu z paczką i rozpakuj ją aplikacją tar:

tar xzf geckodriver-v0.26.0-linux64.tar.gz geckodriver

Aby nie musieć za każdym razem konfigurować webdriver’a (głównej klasy Selenium), dodaj ścieżkę geckodriver do PATH’a:

export PATH=$PATH:/home/pi/gecko

Instalacja Firefox’a na Rasberry Pi użyj:

sudo apt-get install firefox-esr

Przeglądarka Chromium

Żeby otwierać strony, musimy posiadać przeglądarkę, która będzie obsługiwana przez Selenium. W moim przypadku wybrałem Chrome ze względu na możliwość pracy w tle i kompatybilność z wirtualizowanym ekranem. A więc musimy zainstalować przeglądarkę Chrome (a dokładniej Chromium) i także dodać ścieżkę gdzie jest zainstalowana do zmiennej PATH:

sudo apt-get install chromium-chromedriver
export PATH=$PATH:/usr/bin/chromium-browser

Teraz już jesteśmy praktycznie gotowi by używać Selenium w naszych testach. Dlaczego mówię praktycznie? Gdyż byłoby to możliwe, gdybyś używał Selenium z uruchomionym pulpitem (podłączonym do Raspberry Pi monitorem). Chcemy jednak aby magia działa się poza naszym wzrokiem. Do tego potrzebny będzie, wcześniej wspomniany xvfb.

Wirtualny ekran

sudo apt-get install xvfb

Instalujemy go standardową komendą: apt-get install. Musimy jednak pamiętać o tym, że skoro pracujemy z Python’em to trzeba czymś zainicjalizować wirtualny screen i potem go jakoś obsługiwać. Do tego przyda nam się biblioteka pyvirtualdisplay, które musimy zainstalować:

pip install pyvirtualdisplay

Teraz jesteśmy w pełni gotowi do boju o lepsze jutro. Wystarczy, że zaciągniemy biblioteki i uruchomimy w wirtualnym ekranie (Display) webdriver dla Chrome. Klasa obsługująca przeglądarkę wymaga wskazania gdzie jest przechowywany chromedriver. Defaulto’wo podczas instalacji chromium-chromedriver jest to /usr/bin/chromedriver. Poniżej przechodzę na stronę google.com i robię zrzut ekranu przeglądarki:

  1. from selenium import webdriver
  2. from pyvirtualdisplay import Display
  3. display = Display(visible=0, size=(800, 600))
  4. display.start()
  5. driver = webdriver.Chrome('/usr/bin/chromedriver')
  6. driver.get('https://www.google.com/')
  7. driver.save_screenshot('/home/pi/screen.png')

Wykonaj powyższy skrypt i sprawdź, czy zrzut się powiódł. Jeśli tak, to już w kolejnej odsłonie serii Selenium w embedded wykorzystamy webdriver w testach.

Ten post ma 2 komentarzy

    1. Szymon

      Dzięki za czujność i powiadomienie nas o błędzie. Teraz już wiem 😉

Dodaj komentarz