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 サイトの他の関連記事を参照してください。