Selenium-WebDriver for Java で待機期間を効果的に処理する方法
Selenium-WebDriver for Java では、Web が要素の読み込みに時間がかかります。これに対処するために、開発者は多くの場合、待機メカニズムを利用して、WebDriver が目的の要素を見つけて操作するのに十分な時間を確保します。 Java で使用される 2 つの主な方法は、暗黙的待機と明示的待機です。
暗黙的待機
暗黙的待機は、次のコード スニペットで例示されているように、デフォルトの待機を設定します。後続のすべての要素検索の時間:
<code class="java">driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);</code>
ただし、指定された時間枠内に対象の要素が出現しない場合は、例外がスローされます。このアプローチでは、暗黙的な待機がすべての要素ロケーターに適用され、不必要な遅延が発生する可能性があるため、ペーシングの問題が発生する可能性があります。
明示的な待機
fluentWait などの明示的な待機は、特定の要素を待機するためのより詳細なアプローチ。これらは Wait インターフェイスを実装し、時間制限とポーリング間隔の定義を可能にします。次の例は、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>
fluentWait 関数内では、30 秒の制限時間と 5 秒のポーリング間隔が指定されています。待機は、要素が見つからない場合に発生する NoSuchElementExceptions を無視するように構成されています。このアプローチにより、特定の要素を対象とした待機が可能になり、待機プロセスをより詳細に制御できるようになります。
暗黙的な待機と比較して、明示的な待機はより高い柔軟性と精度を提供します。これらにより、さまざまな要素のカスタム待機時間を定義でき、待機エラーに関する詳細なレポートが提供されるため、トラブルシューティングが容易になります。
したがって、Selenium-WebDriver for Java で Web 要素の可視性の問題に直面した場合は、次のことをお勧めします。暗黙的な待機ではなく、fluentWait などの明示的な待機を採用して、テスト自動化スクリプトのより詳細な制御と信頼性の向上を実現します。
以上がSelenium-WebDriver の暗黙的待機と明示的待機: 要素の読み込み時間の処理にはどちらが最適ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。