ホームページ  >  記事  >  Java  >  Selenium-WebDriver の暗黙的待機と明示的待機: どちらを選択する必要がありますか?

Selenium-WebDriver の暗黙的待機と明示的待機: どちらを選択する必要がありますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-02 11:45:30927ブラウズ

Implicit vs. Explicit Waits in Selenium-WebDriver: Which Should You Choose?

Selenium-WebDriver での待機のベスト プラクティス

Selenium-WebDriver を使用する場合、多くの場合、要素が確実に待機するように待機を実装する必要があります。アクションを実行する前にロードされます。一般的な 2 つのアプローチは、暗黙的待機と明示的待機です。

暗黙的待機:

暗黙的待機は、driver.manage().timeouts().implicitlyWait(2, TimeUnit) を使用して設定されます。 .秒);。これらはすべてのドライバー操作にグローバルに影響を及ぼし、すべての要素の検索試行にタイムアウト期間を設けます。このアプローチは、UI の読み込み時間が予測できないシナリオでは便利ですが、全体的な待機時間が長くなる可能性があります。

明示的な待機:

明示的な待機。 WebDriverWait.until(condition-that-finds-the-element); として、特定の要素または条件で実行されます。これらは、より的を絞ったアプローチを提供し、正確な待機時間や、要素の存在や可視性などの条件を指定できるようにします。

比較:

Feature Implicit Waits Explicit Waits
Global Scope Yes No
Customization Limited Highly customizable
Precision Less precise Precise

推奨されるアプローチ:

ほとんどの状況では、明示的な待機 (特に fluentWait) を使用することをお勧めします。暗黙的な待機の代わりに。 FluentWait は、柔軟なタイムアウト、ポーリング間隔、例外処理などの高度なカスタマイズ オプションを提供する明示的な待機の一種です。

FluentWait の例:

<code class="java">public WebElement fluentWait(final By locator) {
    Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
            .withTimeout(30, TimeUnit.SECONDS)
            .pollingEvery(5, TimeUnit.SECONDS)
            .ignoring(NoSuchElementException.class);

    WebElement foo = wait.until(new Function<WebDriver, WebElement>() {
        public WebElement apply(WebDriver driver) {
            return driver.findElement(locator);
        }
    });

    return foo;
}</code>

By fluentWait を利用すると、要素の検索に特定のタイムアウトを設定し、テストの速度を低下させる可能性がある不必要なグローバル待機時間を回避できます。

以上がSelenium-WebDriver の暗黙的待機と明示的待機: どちらを選択する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。