在Selenium中,我是否需要在使用显式等待时禁用隐式等待?

时间:2015-10-05 13:32:37

标签: java c# selenium selenium-webdriver automation

创建驱动程序后,我将隐式等待设置为10秒。

当我希望使用显式等待时,是否必须将隐式等待设置为0?

以下是一个示例:

WebDriver webDriver = new FirefoxDriver();
webDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
//Now I want to use Explicit wait
  

我是否必须做webDriver.manage()。timeouts()。implicitlyWait(0,TimeUnit.SECONDS);或者没必要?

WebDriverWait wait = new WebDriverWait(webDriver, WAIT_FOR_TIMEOUT_SEC);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(id)));

1 个答案:

答案 0 :(得分:4)

没有必要将隐式等待时间重新声明为零。

原因:当您说要使用显式等待时,它只表示您的隐式等待时间不足以等待元素出现,因此您声明显式等待经过特定的行动。

何时应该使用隐式等待:隐式等待是一种告诉selenium在执行每个操作后等待特定时间段的方法。这有助于同步您执行的大多数操作。你给测试执行速度越慢的时间越长。 More about implicit wait

何时应使用显式等待:当特定操作需要时间执行或加载到DOM时,将使用显式等待。这并不告诉selenium在每个动作之后等待特定时间,而是告诉selenium在执行特定动作之前等待一段时间。 More about explicit wait

来自Selenium网站的警告:不要混合隐式和显式等待。这样做会导致不可预测的等待时间。例如,设置10秒的隐式等待和15秒的显式等待可能会导致20秒后发生超时。

希望它有所帮助。