Selenium webdriver 轮询时间
Selenium webdriver polling time
我期待关于 Selenium 中的 selenium webdriver 轮询时间的正确解释。
据我所知,下面的等待命令将等待 40 秒,直到特定元素可点击
public void CreateSalesOrder(){
WebDriverWait wait = new WebDriverWait(driver, 40);
wait.until(ExpectedConditions.elementToBeClickable(btnNewSalesOrser));
btnNewSalesOrser.click();
}
在第二个代码片段中,我添加了 "Polling" 命令。
public void CreateSalesOrder(){
WebDriverWait wait = new WebDriverWait(driver, 40);
wait.pollingEvery(2, TimeUnit.SECONDS);
wait.until(ExpectedConditions.elementToBeClickable(btnNewSalesOrser));
btnNewSalesOrser.click();
}
轮询时间有什么用?
使用 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));
如果我们没有提到任何轮询时间,selenium 将默认轮询时间为 500 毫秒。即,脚本将每 500 毫秒检查一次网页中 web 元素的异常情况。您的第一个代码片段适用于此。
我们使用 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。
希望对您有所帮助。谢谢
为了理解解释,您必须了解 Explicit Wait 的轮询时间。
WebDriverWait wait = new WebDriverWait(driver, 40);
除非它在 40 秒内找到 return 的元素,否则在抛出 TimeoutException 之前最多等待 40 秒。默认情况下,WebDriverWait 每 500 毫秒调用一次 ExpectedCondition,直到 returns 成功,因此 ExplicitWait 的默认轮询时间为 500 毫秒。
wait.pollingEvery(2, TimeUnit.SECONDS);
在这种情况下,轮询时间为 2 秒,即不会在每 500 毫秒后检查预期条件,应在 2 秒后检查直到特定元素可点击。
我期待关于 Selenium 中的 selenium webdriver 轮询时间的正确解释。
据我所知,下面的等待命令将等待 40 秒,直到特定元素可点击
public void CreateSalesOrder(){
WebDriverWait wait = new WebDriverWait(driver, 40);
wait.until(ExpectedConditions.elementToBeClickable(btnNewSalesOrser));
btnNewSalesOrser.click();
}
在第二个代码片段中,我添加了 "Polling" 命令。
public void CreateSalesOrder(){
WebDriverWait wait = new WebDriverWait(driver, 40);
wait.pollingEvery(2, TimeUnit.SECONDS);
wait.until(ExpectedConditions.elementToBeClickable(btnNewSalesOrser));
btnNewSalesOrser.click();
}
轮询时间有什么用?
使用 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));
如果我们没有提到任何轮询时间,selenium 将默认轮询时间为 500 毫秒。即,脚本将每 500 毫秒检查一次网页中 web 元素的异常情况。您的第一个代码片段适用于此。
我们使用 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。
希望对您有所帮助。谢谢
为了理解解释,您必须了解 Explicit Wait 的轮询时间。
WebDriverWait wait = new WebDriverWait(driver, 40);
除非它在 40 秒内找到 return 的元素,否则在抛出 TimeoutException 之前最多等待 40 秒。默认情况下,WebDriverWait 每 500 毫秒调用一次 ExpectedCondition,直到 returns 成功,因此 ExplicitWait 的默认轮询时间为 500 毫秒。
wait.pollingEvery(2, TimeUnit.SECONDS);
在这种情况下,轮询时间为 2 秒,即不会在每 500 毫秒后检查预期条件,应在 2 秒后检查直到特定元素可点击。