何时使用隐式等待和使用位置

use*_*009 4 selenium selenium-webdriver

我对Selenium Webdriver提供的隐式等待方法感到困惑.

  1. 何时使用隐式等待

    a-对于页面加载(当使用driver.get时)或用于Ajax PopUp加载就像我在编辑框中调用一些东西并且正在进行一些查找或Ajax调用.

  2. 在哪里使用隐式等待

    我应该在Ajax调用或页面加载发生的所有方法之后使用,或者只在它足够之后使用(我只是从Selenium RC获取参考,我们可以使用Selenium.SetSpeed方法).

谢谢,阿伦

Sai*_*fur 6

  1. 显式等待是您定义的代码,用于在进一步执行代码之前等待某个条件发生.最糟糕的情况是Thread.sleep(),将条件设置为等待的确切时间段.提供了一些便捷方法,可帮助您编写仅在需要时等待的代码.WebDriverWaitExpectedCondition此相结合是一种可以实现的方法.示例如下:

    WebDriverWait wait = new WebDriverWait(driver, 10);
    WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("someid")));
    
    Run Code Online (Sandbox Code Playgroud)

但是,根据语言的实现而有所不同.见这里更多ExpectedCondition

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

     driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    
    Run Code Online (Sandbox Code Playgroud)

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

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