Selenium Webdriver の明示的待機と暗黙的待機
WebDriver の対話で問題が発生した場合、開発者は明示的待機と暗黙的待機の適切な使用方法に疑問を抱くことがよくあります。 。この概念を理解するために、これら 2 つの待機戦略の違いを調べてみましょう。
暗黙的な待機
暗黙的な待機は、すべての findElement メソッドに適用されるグローバル タイムアウトを定義します。 WebDriver インスタンス内。要素がすぐに見つからない場合、findElement メソッドは、指定されたタイムアウトが経過するまで一貫して再試行します。ただし、暗黙的待機の動作は十分に文書化されておらず、ブラウザまたはオペレーティング システムによって異なる場合があります。一方、
明示的待機
明示的待機、より柔軟で文書化されたアプローチを提供します。これらの待機は、WebDriverWait クラスを使用して任意の条件に適用できます。暗黙的な待機とは異なり、明示的な待機は、特定の間隔で再試行したり、特定の例外を無視したり、要素の欠如として成功条件を定義したりするようにカスタマイズできます。
明示的な待機を使用する理由
その柔軟性と明確な動作を考慮すると、明示的待機には暗黙的待機よりもいくつかの利点があります。 waits:
コード例
暗黙的待機:
import org.openqa.selenium.WebDriver; import java.util.concurrent.TimeUnit; WebDriver driver = new FirefoxDriver(); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); WebElement element = driver.findElement(By.id("myId"));
明示的な待機:
import org.openqa.selenium.WebDriver; import org.openqa.selenium.support.ui.WebDriverWait; import org.openqa.selenium.By; import java.util.concurrent.TimeUnit; WebDriver driver = new FirefoxDriver(); WebDriverWait wait = new WebDriverWait(driver, 10); WebElement element = wait.until( ExpectedConditions.presenceOfElementLocated(By.id("myId")));
結論
明示的な待機が推奨されますSelenium Webdriver の待機戦略の選択。文書化された動作、多用途性、カスタマイズ可能な性質により、安定した予測可能な Web インタラクションを保証するための信頼できるオプションとなっています。柔軟性、明確さ、テストの信頼性を向上させるために、暗黙的な待機を明示的な待機に置き換える必要があります。
以上がSelenium の明示的待機と暗黙的待機: どちらの待機戦略を選択する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。