Selenium webdriver轮询时间

时间:2017-06-20 06:39:28

标签: java selenium polling

我期待有关Selenium中硒webdriver轮询时间的正确解释。

据我所知,下面的wait命令会等待40秒直到特定元素被点击

  public void CreateSalesOrder(){
        WebDriverWait wait = new WebDriverWait(driver, 40);
        wait.until(ExpectedConditions.elementToBeClickable(btnNewSalesOrser));
            btnNewSalesOrser.click(); 
    }

在第二段代码中,我添加了“轮询”命令。

   public void CreateSalesOrder(){
        WebDriverWait wait = new WebDriverWait(driver, 40);
        wait.pollingEvery(2, TimeUnit.SECONDS);
        wait.until(ExpectedConditions.elementToBeClickable(btnNewSalesOrser));
        btnNewSalesOrser.click();
    }

投票时间的用途是什么?

3 个答案:

答案 0 :(得分:7)

如果我们没有提及任何轮询时间,硒将默认轮询时间为500毫秒。即..,脚本将每500毫秒检查一次网页中的webelement的例外条件。您的第一个代码段适用于此。

我们使用 pollingEvery 来覆盖默认的轮询时间。在下面的示例(您的第二个代码片段)中,脚本每2秒检查一次预期的条件,而不是500毫秒。

public void CreateSalesOrder()
{
    WebDriverWait wait = new WebDriverWait(driver, 40);
    wait.pollingEvery(2, TimeUnit.SECONDS);
    wait.until(ExpectedConditions.elementToBeClickable(btnNewSalesOrser));
    btnNewSalesOrser.click();
}

此轮询频率实际上可能有助于减少CPU过载。 有关详细信息pollingEvery,请参阅此javadoc。

希望这会对你有所帮助。感谢。

答案 1 :(得分:3)

使用WebDriverWait wait = new WebDriverWait(driver, 40);驱动程序将等待最多 40秒,直到条件满足为止。

使用wait.pollingEvery(2, TimeUnit.SECONDS);指定驱动程序将执行检查(以查看条件是否已满足)每2秒,直到条件满足为止。

总之,这意味着您的司机将在 40秒的时间内每2秒检查一次

您还可以将轮询间隔指定为Constructor中的快捷方式:

WebDriverWait wait = new WebDriverWait(driver, 40, TimeUnit.SECONDS.toMillis(2));

答案 2 :(得分:0)

要理解说明,您必须了解显式等待的轮询时间。

WebDriverWait wait = new WebDriverWait(driver,40);

在抛出TimeoutException之前等待最多40秒,除非它发现元素在40秒内返回。 WebDriverWait默认情况下每500毫秒调用一次ExpectedCondition,直到它成功返回,因此ExplicitWait的默认轮询时间为500毫秒。

wait.pollingEvery(2,TimeUnit.SECONDS);

在这种情况下,轮询时间为2秒,即每500毫秒后不会检查预期条件,应在2秒后检查,直到特定元素可被点击为止。