Selenium Webdriver Manager dla projektów w Python - pierwsze kroki

WebDriver API jest protokołem definiującym niezależny od technologii interfejs do kontrolowania przeglądarek. Producenci popularnych przeglądarek często dostarczają własną implementację WebDriver API, nazywaną sterownikiem (ang. driver), która do komunikacji z przeglądarką używa API dostarczonego przez jej producenta. Przykładami takich sterowników są geckodriver dla Mozilla Firefox oraz chromedriver dla Google Chrome.

Manualne zarządzanie wersjami sterowników w projektach jest czasochłonne i podatne na błędy, dlatego też zalecam używanie narzędzi automatyzujących ten proces. Popularnym narzędziem wykorzystywanym w projektach opartych o technologię Python jest Webdriver Manager - biblioteka umożliwiająca automatyczne zarządzanie binariami sterowników wymaganymi przez Selenium WebDriver.

Działanie Webdriver Manager

Biblioteka Webdriver Manager rozwiązuje problem zarządzania sterownikami do przeglądarek poprzez automatyczne pobranie sterownika o wskazanej wersji i zapisanie go w lokalnym katalogu (~/.wdm)

W wyniku tego otrzymujemy środowisko, które jest prawidłowo skonfigurowane i gotowe do automatycznego kontrolowania przeglądarki. Jak więc skorzystać z tej metody?

Dodanie zależności do projektu

Bibliotekę Webdriver Manager znajdziesz w centralnym repozytorium PyPI. Instalacja pakietu odbywa się przez wykonanie komendy:

1
pip install webdriver_manager

Podstawowe wykorzystanie biblioteki w testach

Automatyczne zarządzanie sterownikami jest możliwe przez wykorzystanie odpowiedniej klasy z pakietu webdriver_manager. Dla przeglądarki Firefox będzie to klasa GeckoDriverManager, a dla przeglądarki Chrome ChromeDriverManager.

1
2
3
4
from webdriver_manager.firefox import GeckoDriverManager
from selenium.webdriver import Firefox

driver = Firefox(executable_path=GeckoDriverManager().install())

Metoda install() zwraca ścieżkę, pod którą znajduje się zainstalowany przez managera sterownik.

Webdriver Manager aktualnie umożliwia zarządzenie sterownikami do przeglądarek Chrome, Firefox, Opera, oraz Internet Explorer.

Przykładowy test wykorzystujący Webdriver Manager jest następujący:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import pytest
from selenium.webdriver import Firefox
from selenium.webdriver.common.by import By
from webdriver_manager.firefox import GeckoDriverManager


@pytest.fixture()
def driver():
d = Firefox(executable_path=GeckoDriverManager().install())
d.implicitly_wait(0.5)
d.get("https://qalabs.pl")
yield d
d.quit()


def test_hello_selenium(driver):
assert driver.title == "QA Labs - Warsztaty dla Specjalistów IT"
assert driver.find_element(By.CSS_SELECTOR, "#page-top > header div.intro-heading").text
assert driver.find_element(By.CSS_SELECTOR, "#page-top > header div.intro-lead-in").text

Podsumowanie

Webdriver Manager jest biblioteką, która rozwiązuje problem poprawnej konfiguracji środowiska dla testów z użyciem Selenium WebDriver. Ułatwia ona znacząco tworzenie jak i uruchamianie testów w różnych systemach operacyjnych, z użyciem przeglądarek (i sterowników) w różnych wersjach.

Zobacz również

Rafał Borowiec

Nazywam się Rafał Borowiec. Jestem w branży IT od ponad 10 lat, przygodę rozpoczynałem jako tester oprogramowania. Oprócz testowania oprogramowania i zapewniania jakości, specjalizuję się w wytwarzaniu oprogramowania oraz zarządzaniu projektami i zespołami. Chętnie dzielę się wiedzą, prowadzę blog dotyczący programowania, jestem wykładowcą oraz trenerem IT. Występuję również jako prelegent na wydarzeniach branżowych, dotyczących zarówno zapewnienia jakości, testowania, jak i programowania.