2013-08-28 7 views
9

Я тестирую страницу с iFrame, содержимое которой генерируется JavaScript динамически. Я должен дождаться загрузки iFrame полностью, чтобы убедиться, что все элементы присутствуют. Я попробовал следующий код, это не сработало.Selenium WebDriver: Как дождаться загрузки iFrames?

WebDriver frame = wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("frmMain")); 

Я также попытался дождаться присутствия какого-либо элемента в iFrame. Это тоже не сработало.

Любая помощь будет принята с благодарностью, спасибо!

ответ

-3

Вы можете просто добавить ожидания заявления - в течение определенного количества секунд ...

+0

Спасибо за ваш ответ. Полезно дождаться секунд сервлетов, прежде чем разобраться с iframe. – user2432405

+0

В приложении, которое я тестирую, есть iframes на каждой странице. Время, необходимое для каждой загрузки iframe, зависит от данных, которые необходимо обработать. это не кажется элегантным способом ждать определенных секунд каждый раз, когда обновляется какая-то страница. – user2432405

+0

Я согласен, что это не изящно, но я обнаружил, что мне нужно было это делать иногда. –

8

Выберите элемент на IFrame, который принимает максимальное время для загрузки, например, любую кнопку или изображение и ожидание, используя следующий код.

WebDriverWait wait = new WebDriverWait(driver, 30); 
wait.until(ExpectedConditions.visibilityOfElementLocated((By 
       .name("element")))); 

Вернее, вы можете дождаться появления iFrame, а затем переключиться на него, а затем использовать приведенное выше утверждение!

+1

Я делал это раньше с JS загруженным iframe, и он работает. – craastad

+0

Я протестировал страницу по следующему коду: \t public void SelectSomething (драйвер WebDriver, String s) { driver.manage(). Timeouts(). ImplicitlyWait (10, TimeUnit.SECONDS); WebDriverWait wait = новый WebDriverWait (драйвер, 20); WebDriver frame = wait.until ( \t Ожидаемые условия.frameToBeAvailableAndSwitchToIt ("frmMain")); wait = new WebDriverWait (frame, 30); System.out.println ("#######################" + (новая дата())); System.out.println (frame.getPageSource()); System.out.println ("#######################" + (новая дата())); ////// Продолжение следует ... – user2432405

+0

try { \t \t wait.until (ExpectedConditions.presenceOfElementLocated (By.tagName ("img"))); \t} catch (TimeoutException e) { \t \t System.out.println (frame.getPageSource()); \t} \t System.out.println ("######################" + (новая дата())); \t System.out.println (frame.getPageSource()); \t System.out.println ("#######################" + (новая дата())); } ////// Продолжение следует ... – user2432405

Смежные вопросы