2013-08-28 31 views
9

JavaScriptで内容が動的に生成されるiFrameを持つページをテストしています。すべての要素が存在することを確認するために、iFrameが完全に読み込まれるまで待つ必要があります。私は次のコードを試して、それは動作しませんでした。Selenium WebDriver:iFramesが完全にロードされるのを待つ方法

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

iFrameの一部の要素が存在するのを待つことも試みました。それはうまくいかなかった。

任意の助けいただければ幸いです、ありがとう!

答えて

-3
あなただけのwait文を追加する必要があり

- 秒の一定数のために...

+0

あなたの答えをありがとう。 iframeを処理する前にservral秒を待つと便利です。 – user2432405

+0

私がテストするアプリケーションには、各ページにiframeがあります。各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 driver、String s){ driver.manage()。timeouts()。暗黙的に待機します(10、TimeUnit.SECONDS); WebDriverWait wait =新しいWebDriverWait(driver、20); WebDriver frame = wait.until( \t \t ExpectedConditions.frameToBeAvailableAndSwitchToIt( "frmMain")); 待機=新しいWebDriverWait(フレーム、30); のSystem.out.println( "#######################" +(新しい日付())); System.out.println(frame.getPageSource()); のSystem.out.println( "#######################" +(新しい日付())); //////続ける... – user2432405

+0

try { \t \t wait.until(ExpectedConditions.presenceOfElementLocated(BytagName( "img")))); \t}キャッチ(TimeoutException電子){ \t \tのSystem.out.println(frame.getPageSource())。 \t} \t \t System.out.println( "##############" +(new Date())); \tのSystem.out.println(frame.getPageSource())。 \tのSystem.out.println( "#######################" +(新しい日付())); } //////続ける... – user2432405

関連する問題