
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):
<iframe name="my_frame"> <button id="my_button" value="Button"/> </iframe>
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:
driver.SwitchTo().Frame("my_frame");
Po tej linijce możemy dobrać się do przycisku.
Leave a Comment