我对 Selenium Webdriver 提供的隐式等待方法有些困惑。

  • 何时使用隐式等待
    a- 用于页面加载(使用 driver.get 时)或用于 Ajax 弹出式加载 假设我正在编辑框中输入一些内容,并且正在发生一些查找或 Ajax 调用。
  • 在哪里使用隐式等待
    我应该在 Ajax 调用或页面加载发生的任何地方使用所有方法,还是只使用一次就足够了(我只是从 Selenium RC 中获取引用,我们可以使用 Selenium.SetSpeed 方法)。

  • 谢谢,
    阿伦

    最佳答案

  • 显式的 等待是您定义的代码,用于在代码中进一步处理之前等待特定条件发生。最坏的情况是 Thread.sleep() ,它将条件设置为要等待的确切时间段。提供了一些方便的方法来帮助您编写仅在需要时等待的代码。 WebDriverWaitExpectedCondition 相结合是一种可以实现的方法。示例如下:
    WebDriverWait wait = new WebDriverWait(driver, 10);
    WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("someid")));
    

  • 但是,根据语言实现而有所不同。有关 ExpectedCondition 的更多信息,请参阅 here
  • 隐含的 等待是告诉 WebDriver 在尝试查找一个或多个元素时,如果它们不是立即可用的,则轮询 DOM 一段时间。默认设置为 0。设置后,将在 WebDriver 对象实例的生命周期内设置隐式等待。下面是隐式等待的实现:
     driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    

  • 这两个定义都来自 seleniumhq 和最完美的定义。

    toolsQA 中有一个很好的解释如何以及何时使用它们。加上 隐式、显式和 FLUENT 等待之间的比较,值得一看。

    关于selenium - 何时使用隐式等待以及在何处使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27618695/

    10-08 22:11
    查看更多