WebDriverWait计时器在测试之间重置



我有以下代码:

// setting timeout to a FULL MINUTE
WebDriverWait wait = new WebDriverWait(driver, 60);
Actions action = new Actions(driver);
// First, click the usermenu
WebElement userMenu = wait.until(ExpectedConditions.elementToBeClickable(By.id("UserMenu")));
userMenu.click();
WebElement adminPortal = driver.findElement(By.id("AdminPortals"));
action.moveToElement(adminPortal);
action.perform();
// Wait for secondary menu to become available
WebElement portal = wait.until(ExpectedConditions.elementToBeClickable(By.id(portalId)));
portal.click();

基本上,"UserMenu"是一个下拉菜单,在扩展菜单"AdminPortals"上有一个悬停。上面的代码模拟(在Selenium中,单击扩展菜单中的项目的操作

我的问题是关于超时时间。什么时候开始倒计时?我假设是在我使用wait.until()时。我假设一旦ExpectedConditions返回True,它就会停止计数?真正的问题是:如果我像这里一样使用相同的"等待"两次,60秒是重新设置为每次使用之间的限制,还是在之前停止的地方重新开始计数?

那么,如果第一次等待耗时2秒,第二次等待耗时3秒,那么第三次调用wait.until()的超时是55秒,还是重置为60秒?

是的,当您调用until方法时,它开始倒计时。当您实例化一个新的WebDriverWait对象并指定超时时,它会设置一个时钟,因此每次在该对象上调用util方法时,它都会继续倒计时相同的计时器。它不会在每次返回时重置计时器。如果希望重置计时器,则需要创建新的WebDriverWait对象。

这在文件中确实不清楚。我必须查看代码才能弄清楚发生了什么。逻辑实际上是从FluentWait类继承的。这是我看到的源代码链接:

https://code.google.com/p/selenium/source/browse/java/client/src/org/openqa/selenium/support/ui/FluentWait.java

因此,如果第一次等待耗时2秒,第二次等待耗时3秒,则对wait.until()的第三次调用的超时时间将为55秒。

最新更新