在 Selenium 中,使用显式等待时是否需要禁用隐式等待?
In Selenium do I need to disable an implicit wait when using an explicit wait?
我在创建驱动程序时将隐式等待设置为 10 秒。当我想使用显式等待时,是否必须将隐式等待设置为 0?
这是一个示例:
WebDriver webDriver = new FirefoxDriver();
webDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
//Now I want to use Explicit wait
Do I have to do webDriver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS); or it is not necessary?
WebDriverWait wait = new WebDriverWait(webDriver, WAIT_FOR_TIMEOUT_SEC);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(id)));
没有必要将隐式等待时间重新声明为零。
原因:当您说要使用显式等待时,这仅表示您的隐式等待时间不足以等待元素出现等等您在特定操作后声明显式等待。
何时应该使用隐式等待:隐式等待是一种告诉 selenium 在执行每个操作后等待特定时间段的方法。这有助于同步您执行的大多数操作。您给的时间越长,测试执行的速度就越慢。 More about implicit wait
何时应使用显式等待: 当特定操作需要时间执行或加载到 DOM 时,使用显式等待。这不会告诉 selenium 在每个动作之后等待特定时间,而是告诉 selenium 在仅执行特定动作之前等待一段时间。 More about explicit wait
来自 Selenium 网站的警告: 不要混合隐式和显式等待。这样做会导致不可预测的等待时间。例如,设置 10 秒的隐式等待和 15 秒的显式等待,可能会导致 20 秒后发生超时。
希望对您有所帮助。
我在创建驱动程序时将隐式等待设置为 10 秒。当我想使用显式等待时,是否必须将隐式等待设置为 0?
这是一个示例:
WebDriver webDriver = new FirefoxDriver();
webDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
//Now I want to use Explicit wait
Do I have to do webDriver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS); or it is not necessary?
WebDriverWait wait = new WebDriverWait(webDriver, WAIT_FOR_TIMEOUT_SEC);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(id)));
没有必要将隐式等待时间重新声明为零。
原因:当您说要使用显式等待时,这仅表示您的隐式等待时间不足以等待元素出现等等您在特定操作后声明显式等待。
何时应该使用隐式等待:隐式等待是一种告诉 selenium 在执行每个操作后等待特定时间段的方法。这有助于同步您执行的大多数操作。您给的时间越长,测试执行的速度就越慢。 More about implicit wait
何时应使用显式等待: 当特定操作需要时间执行或加载到 DOM 时,使用显式等待。这不会告诉 selenium 在每个动作之后等待特定时间,而是告诉 selenium 在仅执行特定动作之前等待一段时间。 More about explicit wait
来自 Selenium 网站的警告: 不要混合隐式和显式等待。这样做会导致不可预测的等待时间。例如,设置 10 秒的隐式等待和 15 秒的显式等待,可能会导致 20 秒后发生超时。
希望对您有所帮助。