Po przygotowaniu środowiska w tej lekcji pokażę Ci w jaki sposób powinna wyglądać konfiguracja Selenium i ChromeDrivera. Na takich ustawieniach będziemy pracować już przez większość tego kursu.
Selenium 4
W tym kursie korzystamy z ostatniej wersji Selenium 3 (3.141.1). Zainstaluj więc taką właśnie wersję Selenium u siebie na potrzeby tego kursu.
Lekcje, które zobaczysz w tym kursie pokazują kod, który zadziała także w Selenium 4. Jeżeli coś się zmieniło, to zobaczysz taką informację w lekcji.
W Selenium 4 doszło natomiast kilka nowości. Te nowości zobaczysz w dodatkowym module.
Konfiguracja Selenium i ChromeDrivera: linki i materiały
Paczki nugetowe
W ramach konfiguracji zainstalujemy sobie dwie paczki nugetowe. Paczki takie możesz zainstalować z NuGet Package Managera. Żeby go otworzyć wystarczy, że otworzysz projekt lub solucję w Visual Studio i:
- klikniesz prawym przyciskiem myszy na solucji i wybierzesz “Manage NuGet Packages for Solution”,
- klikniesz prawym przyciskiem myszy na projekcie i wybierzesz “Manage NuGet Packages”,
- z górnego paska menu wybierzesz Tools>NuGetPackageManager>Manage NuGet Packages for Solution.
Paczki, które zainstalujemy dla naszego projektu to:
- Selenium.WebDriver (wersja 3.141.0, czyli najnowsza na moment nagrywania tego filmu)
- Selenium.WebDriver.ChromeDriver (wersja zgodna z wersją przeglądarki Chrome na Twojej maszynie)
Zanim jednak zainstalujemy tą drugą paczkę, pokażę Ci jak zainicjalizować drivera, korzystając z ChromeDrivera, którego ściągniemy sobie stąd.
Znak ucieczki i dosłowny string
W tym filmie przewinie się temat znaku ucieczki i dosłownego stringa (verbatim string). Chodzi o to, że backslash wewnątrz stringa nie jest interpretowany po prostu jako znak backslash, chyba, że powiemy inaczej. Backslash to znak ucieczki, który pozwala nam w połączeniu z innym znakiem np. na wstawienie nowej linii (\n). Jeżeli backslasha chcemy traktować dosłownie to możemy zrobić jedną z dwóch rzeczy:
- wstawić backslasha przed backslasha: w ten sposób pierwszym backslashem zmieniamy domyślną interpretację tego drugiego; podwójny backslash zostanie więc zinterpretowany jako po prostu backslash;
- potraktować stringa jako dosłownego (ang. verbatim string): robimy to w ten sposób, że przed całym literałem dodajemy małpę 🐒, czyli np. @”Jakiś string, który dosłownie potraktuje tego backslasha – \”; w ten sposób wszystko co znajdzie się po środku zostanie zinterpretowane dosłownie, jako określone znaki.
[SetUp], [TearDown] i [Test]
Oznaczenia [SetUp], [TearDown] i [Test] to informacje dla NUnita, co ma zrobić z metodami znajdującymi się bezpośrednio poniżej tych oznaczeń.
- [SetUp]: metoda wykona się przed każdym testem (czyli przed każdą metodą oznaczoną jako [Test]).
- [TearDown]: metoda wykona się po każdym teście (czyli po każdej metodzie oznaczonej jako [Test]).
- [Test]: metoda oznaczona w ten sposób jest metodą testową (czyli testem).
Dokumentacja Selenium: linki
Konstruktor użyty przez nas do stworzenia obiektu ChromeDirver.
Hejo.
Nie istnieje jakaś magiczna sztuczka aby Visual Studio sam nas pytał że wykrył nowszy sterownik Chroma? Zawsze trzeba sprawdzać to ręcznie?
Halko! Nie znam, poza tym nie zawsze będziesz chciał mieć najnowszego drivera. Będziesz chciał mieć drivera odpowiadającego Twojej wersji przeglądarki.
Ok podziękował.
Wiesz co tak w kwestii technicznej – nie dostałem maila że mi odpowiedziałaś 🙁 A checkboksik “Powiadom mnie mailowo, gdy pojawi się nowy komentarz lub odpowiedź.” mam zaznaczony 🙁
Napisałam Ci maila 😀
Hej, właśnie próbuję zaktualizować chromedrivera, otwieram NuGet Packages i aktualizuję opowiedni package (a właściwie to wszystkie, które wymagają aktualizacji), ale ku mojej konsternacji po zbuildowaniu (dokładnie tak jak w instrukcji) nadal mam starego chromedrivera w binie (wszystkie inne pliki mi się aktualizują, chromedriver nie). Muszę ręcznie sobie pobrać drivera, rozpakować, wkleić do odpowiedniego folderu w solucji i wtedy dopiero jest OK. Czy masz może jakiś pomysł dlaczego to może nie działać i dlaczego trzeba to robić dookoła? 🙁
Mi się tak dzieje, jak mam gdzieś wiszącego w procesach chromedrivera i czasem jego wywalenie nie pomaga. Jakkolwiek głupio to może brzmieć, to pomogło mi ponowne uruchomienie kompa, odinstalowanie paczki nugetowej i ponowna instalacja 🤷♀️