5

ページのリロードを待つ方法はありますか? たとえば、私がページにlocalhost:9000/webいて、webdriver にlocalhost:9000/web. 一部の要素を待機してリロードを示したくない、または示すことができません。

4

5 に答える 5

5

Selenium WebDriver では、次のコード スニペットを使用して、waitForPageToLoad を実装できます。

public void waitForPageToLoad(WebDriver driver) {
    ExpectedCondition < Boolean > pageLoad = new
    ExpectedCondition < Boolean > () {
        public Boolean apply(WebDriver driver) {
            return ((JavascriptExecutor) driver).executeScript("return document.readyState").equals("complete");
        }
    };

    Wait < WebDriver > wait = new WebDriverWait(driver, 60);
    try {
        wait.until(pageLoad);
    } catch (Throwable pageLoadWaitError) {
        assertFalse("Timeout during page load", true);
    }
}
于 2013-10-26T16:51:54.227 に答える
3

これは古いですが、これに対する解決策も欲しかったので、この質問に出くわしました。

投稿された回答のおかげで、予想される html の古さの状態とwaitForPageToLoad@mfsi_sitamj 投稿の関数を組み合わせて、独自のソリューションを作成しました。

このようなもの:

@CacheLookup
@FindBy(tagName = "html")
private WebElement __document;

public void waitForReload() {
    Wait<WebDriver> wait = new WebDriverWait(driver, 10);
    wait.until(ExpectedConditions.stalenessOf(this.__document));
    wait.until((ExpectedCondition<Boolean>) wd ->
        ((JavascriptExecutor) wd).executeScript("return document.readyState").equals("complete"));
}
于 2016-03-15T03:56:47.753 に答える
0

get()、navigate.to()、navigate.refresh()、navigate.forward()、navigate.backward() などの Webdriver メソッドは、次のページが完全に読み込まれるまで自動的に待機します。

Selenium RC では、

new Selenium().waitForPagetoLoad()
于 2013-10-24T18:50:04.290 に答える
0

Selenium RC を使用している場合は、それがwaitForPageToLoad()メソッドです。

selenium.waitForPagetoLoad() // it might be waitForLoad() - can't remember.

Selenium WebDriver を使用している場合、すべてのナビゲーションは API によって処理され、ブラウザーがナビゲートを完了するまで暗黙的に待機します。

driver.navigate().to().url("http://localhost:9000/web");

また、先頭に「http://」を付けていることを確認してください。Selenium が「localhost:9000」を解決していない可能性があります

于 2013-10-23T23:03:38.100 に答える