步骤:1
WebDriver wd = new FirefoxDriver();
//Removed this code after stackoverflow 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(“某个名称”)位于页面源的开头。
但是,如果我在15秒内停止手动加载浏览器,那么第3步就到达了。那么超时5秒是如何在这里被使用的。是否有任何方法可以达到第三步,通过手动停止或在页面加载充分之前。
我使用selenium 2.46.0库和firefox 28。并使用firefox版本35、36和37进行了检查。
在我正在使用的internet连接中,url至少需要4分钟才能完全加载。
如果需要更多的细节,请告诉我。
提前谢谢。
发布于 2016-07-13 05:51:12
@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);
}https://stackoverflow.com/questions/31221778
复制相似问题