ホームページ > Java > &#&チュートリアル > Web ページの読み込みが完了したかどうかを確認するための汎用 Selenium 関数はありますか?

Web ページの読み込みが完了したかどうかを確認するための汎用 Selenium 関数はありますか?

Patricia Arquette
リリース: 2024-12-29 01:06:10
オリジナル
846 人が閲覧しました

Is There a Generic Selenium Function to Verify Complete Web Page Loading?

ページが Selenium に完全にロードされたかどうかを確認する汎用関数はありますか?

Web ページがロードされているかどうかを判断しようとしています。 Seleniumを使用したロードが完了しました。コードを使用しようとしましたが、ページの読み込み中であっても待機しません。特定の要素の可視性やクリック可能性を検査するソリューションではなく、一般的なソリューションを求めています。

答え:

いいえ、それを確認するための一般的な Selenium メソッドはありません。ウェブのフルロードpage.

説明:

コードを調べてみましょう:

new WebDriverWait(firefoxDriver, pageLoadTimeout).until(
          webDriver -> ((JavascriptExecutor) webDriver).executeScript("return document.readyState").equals("complete"));
ログイン後にコピー

このコードの pageLoadTimeout 変数は、実際には実際の pageLoadTimeout に対応しません。 () 関数。

ただし、ページが完全に読み込まれたかどうかを確認するユースケースでは、次のようにすることができます。 DesiredCapabilities クラスまたは ChromeOptions クラスのいずれかを使用して、pageLoadStrategy() を「normal」に設定して使用します (他の可能な値には「none」と「eager」が含まれます)。以下に例を示します。

DesiredCapabilities の使用:

DesiredCapabilities dcap = new DesiredCapabilities();
dcap.setCapability("pageLoadStrategy", "normal");
FirefoxOptions opt = new FirefoxOptions();
opt.merge(dcap);
WebDriver driver = new FirefoxDriver(opt);
ログイン後にコピー

使用ChromeOptions:

ChromeOptions opt = new ChromeOptions();
opt.setPageLoadStrategy(PageLoadStrategy.NORMAL);
WebDriver driver = new FirefoxDriver(opt);
ログイン後にコピー

考慮事項:

PageLoadStrategy を「normal」に設定すると、ブラウザ クライアントが「document.readyState」と等しい状態に確実に到達します。 "完了。"ただし、これはすべての JavaScript および Ajax 呼び出しが完了したことを保証するものではありません。

これに対処するには、関数を使用してすべての JavaScript および Ajax 呼び出しが完了するまで待機できます。

public void WaitForAjax2Complete() throws InterruptedException
{
    while (true)
    {
        if ((Boolean) ((JavascriptExecutor)driver).executeScript("return jQuery.active == 0")){
            break;
        }
        Thread.sleep(100);
    }
}
ログイン後にコピー

あるいは、WebDriverWait を ExpectedConditions と組み合わせて使用​​して、特定のイベントまたは要素を待機することもできます。状態:

// Wait for a specific part of the page title
new WebDriverWait(driver, 10).until(ExpectedConditions.titleContains("partial_title_of_application_under_test"));

// Wait for a specific element to become visible
WebElement ele = new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("xpath_of_the_desired_element")));
ログイン後にコピー

参照:

  • [Selenium IE WebDriver は次の場合にのみ動作します。デバッグ](https://stackoverflow.com/questions/23791841/selenium-ie-webdriver-only-works-while-debugging)
  • [Selenium ページの待機を管理する方法読み込み?](https://stackoverflow.com/questions/19750811/selenium-how-to-manage-wait-for-page-load)
  • [Chrome のページ読み込み戦略ドライバー](https://stackoverflow.com/questions/55985139/page-load-strategy-for-chrome-driver-updated-till-selenium-v3-12-0)

以上がWeb ページの読み込みが完了したかどうかを確認するための汎用 Selenium 関数はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート