如果findElement操作完成,隐式等待是否会继续?

时间:2015-04-22 14:36:20

标签: selenium selenium-webdriver

隐式等待:如果设置了等待,它将等待每个findElement / findElements来电的指定时间。如果操作没有完成,它将抛出异常。

假设我们将隐式等待设置为10秒。我的问题是,如果findElement行动在10秒之前完成,那么selenium会继续下一步吗?

2 个答案:

答案 0 :(得分:3)

即可。设置隐式等待会导致驱动程序对象 等待 达设定时间,如果它正在查找的元素 未立即找到 。驱动程序对象每500毫秒轮询一次DOM,直到找到该元素或超时为止。

这是official Selenium documentation page的解释:

  

隐式等待是告诉WebDriver对DOM进行轮询   尝试查找一个或多个元素的时间量   没有立即可用。默认设置为0.一旦设置,   隐式等待是为WebDriver对象实例的生命周期设置的。

所以,简单地回答你的问题,是的,一旦找到它正在寻找的元素,它就会继续执行后续步骤。您也可以理解,像@sircapsalot这样的简单实验已经证明了这一点。

答案 1 :(得分:2)

答案:

  

即可。如果在命中隐式超时之前找到该元素,它将继续下一步。

概念证明:

@Test
public void test29800926() {
    driver.get("http://ddavison.io/tests/getting-started-with-selenium.htm");
    driver.manage().timeouts().implicitlyWait(30000, TimeUnit.MILLISECONDS);
    System.out.println(driver.findElement(By.id("click")).getText());
}

不是等待我将隐式等待设置为(30000ms / 1000 = 30秒)的总共30秒,而是立即找到它并继续打印元素的文本。