如果隐式和显式等待都在Framework中使用

时间:2014-09-08 14:41:45

标签: selenium selenium-webdriver wait

我理解等待和使用它。但有一点我无法弄清楚:如果我在顶部隐式等待5秒然后使用显式等待元素。那么硒将如何表现。尝试但无法在网上得到满意的答案。

1 个答案:

答案 0 :(得分:4)

首先要了解明确和隐含等待的概念

隐式等待:隐式等待是指在尝试查找一个或多个元素(如果它们不是立即可用)时,将WebDriver轮询DOM一段时间。默认设置为0.设置后,将为WebDriver对象实例的生命周期设置隐式等待。 例如:

WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("http://somedomain/url_that_delays_loading");
WebElement myDynamicElement = driver.findElement(By.id("myDynamicElement"));

明确等待

  1. 显式等待是您定义的代码,用于在继续执行代码之前等待某个条件发生。
  2. 在某些情况下,显式等待在功能上等同于隐式等待,意味着 a)如果等待时间没有像下面那样被预定义(请注意它们与方法类别不同,它们属于显式或隐式)

    WebDriverWait wait = new WebDriverWait(driver, 10);
    

    WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id(" someid")));

    b)webdriver有时间等待10秒的情况,但是在5秒内找到元素,然后webdriver将继续。

  3. 回答你的问题: 1)假设你定义了10秒然后驱动程序等待10个最大值,但至少它可以等待0.001秒意味着在隐式等待的情况下我们必须给出等待的最大限制,而最小限制取决于找到元素或获得条件完成。

    2)在明确等待期间,除了某些案例webdriver必须等待最大限制。


    因此,作为答案,您的webdriver首先将遵循隐式等待,然后遵循显式等待,因为由于单线程使用,浏览器行为将像其他编程语言一样顺序。


    参考:

    Selenium Explicit and Implicit wait