17

JavaScript によってコンテンツが動的に生成される iFrame を使用してページをテストしています。すべての要素が存在することを確認するには、iFrame が完全に読み込まれるまで待つ必要があります。次のコードを試しましたが、うまくいきませんでした。

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

また、iFrame の要素が存在するのを待ちました。それもうまくいきませんでした。

どんな助けでも大歓迎です、ありがとう!

4

2 に答える 2

18

次のコードを使用して、ロードに最大の時間がかかる IFrame の要素を選択します。

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

または、iFrame が表示されるのを待ってから iFrame に切り替えてから、上記のステートメントを使用することもできます。

于 2013-08-28T12:21:46.920 に答える
2

ページの再読み込みを確認する最も確実な方法は、要素が古くなったことを確認してから、新しい要素が読み込まれたことを確認することです。

elementToBeStale「古い」ページに存在する要素 を選択します。これは、ページのリロード時に古くなると予想される要素です。

次に、リロード後にページに表示されると予想される要素を選択しますxPathOfElementToLoad。これは、古くなると予想される要素と同じである可能性があることに注意してください。

xPathOfElementToLoadはまだページに存在しないため、 で表すことはできませWebElementん。

WebDriverWait wait = new WebDriverWait(driver, WAIT_TIME, POLL_INTERVAL);

ExpectedCondition<Boolean> cond1 = ExpectedConditions.stalenessOf(elementToBeStale);
ExpectedCondition<WebElement> cond2 = ExpectedConditions.presenceOfElementLocated(By.xpath(xPathOfElementToLoad));
ExpectedCondition<Boolean> cond = ExpectedConditions.and(cond1, cond2);

wait.until(cond);

これはページのリロードに役立ちます。ページのリロードではWebElement、要素が古くなるのを待つことで要素が存在しなくなることが保証され、新しい要素が存在するのを待つことで新しいページがロードされることが保証されるためです。

于 2019-11-26T22:16:08.930 に答える