2017-06-20 85 views
2

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

据我所知,在下面等待命令将等待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(); 
    } 

轮询时间的用途是什么?

回答

4

如果我们没有提及任何轮询时间,硒将采取默认的轮询时间为500milli秒。即,脚本将每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过载。 请参阅此javadoc获取更多信息pollingEvery

希望这可以帮助你。谢谢。

+0

谢谢你的家伙。感谢Monika,答案非常有用 –

1

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

使用wait.pollingEvery(2, TimeUnit.SECONDS);指定驾驶员将执行检查(以查看条件是否满足)每2秒,直到条件满足。


总之,这意味着你的驱动程序会检查每2秒40秒


你也可以指定轮询间隔作为Constructor快捷方式:

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

谢谢老兄。答案是真的有帮助 –

0

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

WebDriverWait wait = new WebDriverWait(driver,40);

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

wait.pollingEvery(2,TimeUnit.SECONDS);

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

+0

。答案是非常有用的 –