Zapisy otwarte! Dołącz do kursu Selenium w Javie lub Selenium w C#. Tylko do 23.09.2021 do godz. 21:00. Zapisz się tutaj.

Selenium w C# 34. JavaScript w Selenium

W tej lekcji zobaczysz jak możesz użyć skryptów JavaScript w Selenium. Co to w ogóle znaczy? A no w możemy w otwartym oknie uruchomić jakiś skrypt. Pokażę Ci też do czego to się może przydać.

JavaScript w Selenium

Lekcję zacznę od pokazania Ci w konsoli o co chodzi z tym JavaScriptem i co z grubsza możemy zrobić. Następnie przejdziemy do testów i zobaczysz jak odpalać takie skrypty w Selenium, a mamy do tego dwie metody.

IJavaSciptExecutor

Żeby móc w ogóle odpalić jakikolwiek skrypt potrzebujemy najpierw jakiś obiekt, na którym będziemy mogli wywołać odpowiednie metody. W tym celu musimy rzutować drivera na IJavaScriptExecutor.

IJavaScriptExecutor js = (IJavaScriptExecutor)driver;

IJavaScriptExecutor jest interfejsem zawierającym sygnatury dwóch metod: ExecuteScript oraz ExecuteAsyncScript.

ExecuteScript

Metoda ExecuteScript wykonuje JavaScript, który podamy w parametrze, w kontekście aktualnie otwartego okna albo ramki, w której jesteśmy (czyli po przełączeniu się do niej). Do tej metody możemy także przekazywać dodatkowe argumenty. Metoda ta może (ale nie musi) zwrócić kilka różnych typów w zależności od tego, co zwróci nasz skrypt.

Poniżej przykład skryptu, który wyrzuci nam podany tekst w konsoli (tak działa console.log() w JavaScript).

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

A tutaj zobaczysz skrypt, który już coś zwraca (podany przez nas tekst) w związku z czym metoda ExecuteScript też nam coś zwróci (string).

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Magiczna zmienna arguments

Pokażę Ci teraz na przykładzie kliknięcia w element za pomocą JavaScript jak przekazywać jakieś argumenty do skryptu. Dodam tylko od razu, że takich rzeczy jak klikanie w elementy nie będziemy robić za pomocą JavaScript i jest to bardzo zła praktyka. Więcej o tym mówię na filmie. Jednak taki przykład wydaje się bardzo intuicyjny, bo rozumiemy dokładnie co chcemy zrobić, więc postanowiłam się nim posłużyć.

Jeżeli chcemy kliknąć za pomocą JavaScriptu w jakiś element, musimy ten element przekazać, co dzieje się w przykładzie poniżej.

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

ExecuteAsyncScript

Ta metoda służy do wykonywania takich JavaScriptów, które nie odpowiadają nam od razu, tzn. że musimy poczekać na efekt ich działania. Pokazuję o co chodzi wraz z przykładem na filmie.

Kod

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Wsparcie merytoryczne

Nie masz dostępu do wsparcia merytorycznego dla tego kursu. Wykup dostęp albo zaloguj się, by móc zadawać pytania.