我正在运行Selenium脚本。我想暂停脚本的执行一段时间。 我不想使用selenium 隐式或显式等待,因为我不是在等待页面转换或要显示的元素或要满足的条件。 据我所知,
Thread.sleep();
通常用于这种情况。除Thread.sleep()之外还有其他方法吗?
答案 0 :(得分:0)
如果您只是为了等待而等待(例如限制测试速度),而不期待任何其他条件发生,那么Thread.sleep()
就是您所拥有的。
如果您正在寻找替代方案:在过去.sleep()
之前,您只需创建一个无效的for循环:
for(int i = 0; i < 1000000; i++) {
// wait
}
然而,这并不完全可靠,因为您无法保证从一台机器到下一台机器的持续时间。这样的代码甚至可能会被优化掉。
答案 1 :(得分:0)
这一直对我有用:
public static void waitForPageToLoad() {
WebDriverWait wait = new WebDriverWait(driver, 15);
wait.until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver wdriver) {
return ((JavascriptExecutor) driver).executeScript(
"return document.readyState"
).equals("complete");
}
});
}
答案 2 :(得分:0)
Thread.sleep()
似乎是完成特别要求的唯一方法。
以下是实施它的适当方法:
/**
* Pause the test to wait for the page to display completely.
* This is not normally recommended practice, but is useful from time to time.
*/
public void waitABit(final long delayInMilliseconds) {
try {
Thread.sleep(delayInMilliseconds);
} catch (InterruptedException e) {
LOGGER.warn("Wait a bit method was interrupted.", e);
}
}