WebDrive Selenium dla IE zatrzymuje się po wywołaniu iframe

WebDrive Selenium dla IE zatrzymuje się po wywołaniu iframe
AG
  • Rejestracja:prawie 9 lat
  • Ostatnio:około 8 lat
  • Postów:10
0

Od jakiegoś czasu zmagam się z automatyzacją pewnej stronki przy użyciu WebDrive Selenium w Internet Explorer.

Strona składa się z ramek gdzie dodatkowe ramki są zagnieżdżone w ramkach. Problem polega na tym że jeden z przycisków (umieszczony w ramce typy 'parent') wywołuje ramkę typu 'child' jako popup na całą stronę zakrywając przy tym ramkę typu 'parent' co powoduje zatrzymanie/pauzę wykonywania skryptu. Czy ktoś z was tutaj zaglądających wie czy webdrive dla InternetExplorer obsługuję takie rami? Ewentualnie wie jak obsłużyć ramkę typu child?

Próbowałem następujących rozwiązań:

  • driver.switchTo().frame(driver.findElement(By.id("frame_child")));
  • po wywołaniu ramki typu 'child' próbowałem (możliwie że nieumiejętnie) podłączyć do istniejącego okna przeglądarki webdrive raz jeszcze aby obsłużyć tę ramkę

żadna z wymienionych wyżej opcji niestety nie zadziałała.

Proszę o pomoc w rozwiązaniu problemu.


Tak to jest jak człowiek zabiera się za programowanie od d... strony...
IE
InterruptedException
Podaj proszę wersję IE i błąd jaki wyrzuca Ci webdriver. Próbowałeś rozwiązań ze SoF? Najlepiej podaj również kod źródłowy elementu strony z ramkami. Czy na FF lub Chrome działa?
AG
  • Rejestracja:prawie 9 lat
  • Ostatnio:około 8 lat
  • Postów:10
0

Problem rozwiązałem.Ale od początku.

Wersja przeglądarki to IE11, błędu żadnego mi nie wyrzucał webdriwer ponieważ eclipse zatrzymywał się (tak jakby został wciśnięta pauza) po kliknięciu w przycisk.
Natomiast nie wiedzieć dlaczego ale: problem tkwił właśnie w tym przycisku (umieszczony w ramce typy 'parent') a dokładniej w wykonanej akcji na nim.

Otóż wykonanie na przycisku akcji:

Kopiuj
WebElement przycisk = driver.findElement(By.id(id_przycisku));
przycisk.click();

powodowało problem tutaj opisany.

Natomiast rozwiązaniem problemu okazało się wykonanie na przycisku akcji:

Kopiuj
WebElement przycisk = driver.findElement(By.id(id_przycisku));
przycisk.sendKeys(Keys.ENTER);

po czym następnie można było bez najmniejszego problemu przełączyć się do ramki:

Kopiuj
driver.switchTo().frame(driver.findElement(By.id(id_odpalonej_ramki))):

Problem rozwiązany, można zamknąć lub przekazać do przechowalni potomnym ;)


Tak to jest jak człowiek zabiera się za programowanie od d... strony...

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.