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).
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).
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.
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.
Komentarze
Nie masz aktywnej subskrypcji. Wykup subskrypcję albo zaloguj się, by móc komentować.