Selenium Webdriver 中的显式与隐式等待
当遇到 WebDriver 交互困难时,开发人员经常质疑显式和隐式等待的正确使用。为了理解这个概念,让我们探讨一下这两种等待策略之间的差异。
隐式等待
隐式等待定义适用于所有 findElement 方法的全局超时在 WebDriver 实例中。如果没有立即找到元素,findElement 方法将持续重试,直到指定的超时到期。但是,隐式等待的行为没有详细记录,并且可能因浏览器或操作系统而异。
显式等待
另一方面,显式等待,提供更灵活且记录在案的方法。使用 WebDriverWait 类可以将这些等待应用于任何条件。与隐式等待不同,显式等待可以自定义为以特定间隔重试,忽略某些异常,甚至将成功条件定义为缺少元素。
为什么使用显式等待?
鉴于其灵活性和清晰的行为,显式等待比隐式等待具有多个优势等待:
代码示例
隐式等待:
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中文网其他相关文章!