Selenium i strona z iFrame

W Warszawie podczas prezentacji mówiłem, że developer zajmuje się m.in. UI testami więc warto potwierdzić, że sam czasami mam z nimi do czynienia :D

Dzisiaj tak na szybko opis problemu i rozwiązania.

W pracy mamy system, który m.in. ma opcję płatności poprzez PayPal. No i przy okazji robienia jednego z zadań zacząłem poprawiać stare testy automatyczne. Jednak podczas testowania procesu płatności właśnie PayPalem trafiłem na dziwny problem – przy próbie zalogowania się do PayPalowego konta dostawałem błąd, że Selenium nie znalazło elementów o podanym Id mimo, że jak byk były widoczne na ekranie i klikalne.

Po przeszukaniu kawałka internetu znalazłem przyczynę problemu – formularz logowania na stronie PayPala jest osadzony jako iFrame, a Selenium domyślnie nie widzi elementów znajdujących się w ramkach.

Rozwiązaniem jest przełączenie się najpierw na daną ramkę tak jakby była osobnym oknem.

Załóżmy, że na stronie znajduje się taki fragment kodu (w uproszczeniu):

Chcąc pobrać przycisk musimy najpierw przełączyć się na ramkę „my_frame”. W Selenium dla języka C# będzie to wyglądało w ten sposób:

Po tej linijce możemy dobrać się do przycisku.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *