Wykrywanie zmian w DOM w Selenium 4

Interesuje Cię ten kurs?

Zapisz się na listę, a wyślę Ci szczegóły i informację jak dołączyć 👇 

Wykrywanie zmian w DOM (Document Object Model) to nowość w Selenium 4. Sprowadza się to do wyłapywania zdarzeń, gdy pojawi się zmiana na jakimś konkretnym elemencie. Chodzi o to, żebyśmy mogli wychwytywać zmiany w DOM i na nie reagować w testach. Brzmi jak czarna magia, ale jak zwykle wszystko się wyjaśni wraz z przykładem.

Uwaga: ta funkcjonalność działa tylko dla przeglądarki Chrome.

Przykładowa strona

Najpierw pokażę Ci gdzie będziemy rozrabiać. O tutaj:

Ukryta treść

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

Ponieważ użyte metody różnią się w tym wypadku dla Selenium w Javie i Selenium w C# opiszę to osobno poniżej. Zobaczysz tam przykłady kodu na naszej specjalnie przygotowanej do tego stronie.

Java

Najpierw pokażę Ci działający przykład, a potem będę tłumaczyć.

Ukryta treść

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

To jeszcze nie koniec, przejdź do kolejnej sekcji!

C#

Najpierw pokażę Ci działający przykład, a potem będę tłumaczyć.

Ukryta treść

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

Po co coś takiego?

Nie wiem 🤷‍♀️ To znaczy nie zakładam, że do niczego, raczej zakładam, że mi się nigdy nie zdarzył przypadek, w którym miało by to sens. Przykład, na którym pokazałam Ci jak to działa, możemy to tak naprawdę rozwiązać w inny sposób. Po prostu utworzyć asercję na to, że czekanie aż element zmieni klasę nie rzuci wyjątku. Poniżej podaję przykładowy test w Javie i C#.

Ukryta treść

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

Podejrzewam, że chodzi raczej o dosłowne zastosowanie. Czyli, gdy naprawdę chcemy złapać jakiś event, a nie za pomocą eventu potwierdzić, że kolor przycisku się zmienił, bo to możemy zrobić dużo prościej. I jakby mnie ktoś pytał to taki przykład zrobiłabym właśnie bardziej jak kod, który masz powyżej.