Selenium WebDriverWait 超时
Selenium WebDriverWait timeout
步骤:1
WebDriver wd = new FirefoxDriver();
//Removed this code after Whosebug suggestion in comments
//wd.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
wd.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS);
wd.get("http:\some url");
步骤:2
(new WebDriverWait(wd, 5)).until(ExpectedConditions.
presenceOfElementLocated(By.name("some name")));
步数:3
Some code going on......
我调试了上面的代码,到了第2步。但是在任何情况下,在给定超时 5 秒后都不会到达第 3 步。在页面完全加载之前,它会被阻止。
By.name("some name") 位于页面源代码的开头。
但是,如果我在 15 秒内手动停止浏览器加载,则将到达第 3 步。那么这里如何使用超时 5 秒。有没有办法在不手动停止或页面完全加载之前到达第 3 步?
我正在使用 selenium 2.46.0 库和 firefox 28。
并且还检查了 firefox 版本 35,36 & 37
在我使用的互联网连接中 url 至少需要 4 分钟才能完全加载
如果需要任何其他详细信息,请告诉我。
提前致谢。
@Jeet - 我遇到了同样的问题。解决我正在分享的问题,这对我来说真的很有效
可行的解决方案:
static void waitForPageLoad(WebDriver wdriver) {
WebDriverWait wait = new WebDriverWait(wdriver, 60);
Predicate<WebDriver> pageLoaded = new Predicate<WebDriver>() {
@Override
public boolean apply(WebDriver input) {
return ((JavascriptExecutor) input).executeScript("return document.readyState").equals("complete");
}
};
wait.until(pageLoaded);
}
步骤:1
WebDriver wd = new FirefoxDriver();
//Removed this code after Whosebug suggestion in comments
//wd.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
wd.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS);
wd.get("http:\some url");
步骤:2
(new WebDriverWait(wd, 5)).until(ExpectedConditions.
presenceOfElementLocated(By.name("some name")));
步数:3
Some code going on......
我调试了上面的代码,到了第2步。但是在任何情况下,在给定超时 5 秒后都不会到达第 3 步。在页面完全加载之前,它会被阻止。
By.name("some name") 位于页面源代码的开头。
但是,如果我在 15 秒内手动停止浏览器加载,则将到达第 3 步。那么这里如何使用超时 5 秒。有没有办法在不手动停止或页面完全加载之前到达第 3 步?
我正在使用 selenium 2.46.0 库和 firefox 28。 并且还检查了 firefox 版本 35,36 & 37
在我使用的互联网连接中 url 至少需要 4 分钟才能完全加载
如果需要任何其他详细信息,请告诉我。
提前致谢。
@Jeet - 我遇到了同样的问题。解决我正在分享的问题,这对我来说真的很有效
可行的解决方案:
static void waitForPageLoad(WebDriver wdriver) {
WebDriverWait wait = new WebDriverWait(wdriver, 60);
Predicate<WebDriver> pageLoaded = new Predicate<WebDriver>() {
@Override
public boolean apply(WebDriver input) {
return ((JavascriptExecutor) input).executeScript("return document.readyState").equals("complete");
}
};
wait.until(pageLoaded);
}