0

ページが完全に読み込まれるのを待ちたいと思います。ページ要素が読み込まれるのを待つことでこれを実行できることはわかっています。

しかし、もっと一般的なものが必要です.Faviconを使用して、ページが完全にロードされたかどうかを判断できると思います.

FavIcon が Selenium Webdriver を使用してページに読み込まれたかどうかを確認するにはどうすればよいですか?

「それはあなたのHTMLソースの単なる別の要素であることは理解しています。しかし、どのWebページでもロードされているページを調べると、Faviconが最後にロードされるでしょう。Faviconがロードされるまで待つ方法がある場合アプリケーション全体をテストするためのページの読み込み待ちとしてそれを使用できます (ファビコンは、Web アプリケーションのすべての Web ページで同じになります)。」

4

1 に答える 1

1

ファビコンを待つのが良い考えかどうかはわかりません。さまざまなアプリケーションがさまざまなテクノロジーとIMOを使用しており、すべてのWebアプリケーションに適用できる一般的な待機はあり得ません。以下は、「my」アプリケーションに使用するものです。これはあなたにアイデアを与えます。「自分の」アプリケーションに適したものを構築する必要があります。

public void my_generic_wait_for_page_load() {
 final WebDriverWait wait = new WebDriverWait(this.getDriver(), 300);
 final JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
 final ExpectedCondition<Boolean> jQueryActive_toBeZero = new ExpectedCondition<Boolean>() {
    @Override
    public Boolean apply(WebDriver driver) {
        try {
             return ((Long) jsExecutor
                            .executeScript("return jQuery.active") == 0) ? true
                            : false;
        } catch (final WebDriverException e) {
        log.warn("It looks like jQuery is not available on the page, skipping the jQuery wait, check stack trace for details",e);
            return true; //skip the wait
        }
    }
};
   final ExpectedCondition<Boolean> document_readyState_toBeComplete = new ExpectedCondition<Boolean>() {
            @Override
            public Boolean apply(WebDriver driver) {
                return jsExecutor.executeScript("return document.readyState")
                        .toString().equals("complete") ? true : false;
            }
        };
        wait.until(jQueryActive_toBeZero);
        wait.until(document_readyState_toBeComplete);

 }
于 2013-03-10T23:02:01.977 に答える