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# 32. Ramki w Selenium

W tej lekcji poznasz ramki w Selenium, a bardziej sposoby jak sobie z nimi radzić w naszych testach.

Ramki w Selenium

Ramki to elementy o tagu iframe. Są to szczególne elementy, bo pozwalają na osadzenie zawartości innej strony wewnątrz bieżącej strony. Odbywa się to za pomocą atrybutu src. Ramki, jak każdy inny element, mogą mieć też inne atrybuty. Często będą to id i name. Przykładowy fragment HTMLa z ramką mógłby wyglądać tak:

Ukryta treść

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

Dlaczego ramki w Selenium sprawiają nam problem

Jeżeli sprawiają nam problem to na szczęście tylko przez chwilę, dopóki nie zrozumiemy co trzeba zrobić, żeby wszystko działało tak jak chcemy. Z ramkami problem jest taki, że żeby móc zlokalizować jakiś element wewnątrz ramki albo w ogóle wykonać jakąkolwiek akcję na elemencie wewnątrz, musimy się najpierw do ramki przełączyć.

Przełączanie się do ramki

Domyślnie nasz driver jest niejako w kontekście naszej głównej strony, której URL widzimy na pasku w przeglądarce. Żeby zacząć działać w kontekście ramki musimy na driverze użyć metody SwitchTo().Frame().

Do metody Frame() musimy jednak przekazać parametr mówiący o tym, do jakiej ramki chcemy się przełączyć (na stronie może ich być wiele). Jako parametr możemy przekazać wartość atrybutu name lub id ramki (jako string), jego indeks licząc od zera (czyli po kolejności występowania ramek na stronie) oraz po prostu przekazać tą ramkę jako element. Przykłady zobaczysz poniżej.

Ukryta treść

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

Wskoczenie do domyślnej ramki

Domyślna ramka to ten kontekst, w którym driver jest po przejściu na stronę bez przełączania się w jakąkolwiek ramkę. Czyli chodzi nam tutaj o kontekst całej strony, której URL widzimy w przeglądarce.

W Selenium mamy elegancką metodę, która pozwoli nam wskoczyć w tą właśnie domyślną ramkę. A po co? A no po to, że jak się przełączymy w jakąś ramkę na stronie, bo chcemy tam wykonać jakąś akcję, a następnie chcemy znowu wykonać akcję w domyślnym kontekście, to musimy się przełączyć z powrotem, żeby driver wiedział gdzie teraz będziemy pracować. Żeby przełączyć się do domyślnej ramki musimy użyć poniższej metody.

Ukryta treść

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

Wskoczenie ramkę wyżej

Możemy się też spotkać z sytuacją, że wzajemnie zagnieżdżonych ramek będzie jeszcze więcej. Tzn. na stronie będziemy mieli ramkę, która też ma ramkę w środku. Jak przejść na domyślną ramkę już wiemy, ale co jeżeli chcemy wejść tylko jedną ramkę wyżej? Od tego jest poniższa metoda.

Ukryta treść

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

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.