首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >硒WebDriverWait超时

硒WebDriverWait超时
EN

Stack Overflow用户
提问于 2015-07-04 14:31:46
回答 1查看 3.3K关注 0票数 2

步骤:1

代码语言:javascript
复制
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

代码语言:javascript
复制
(new WebDriverWait(wd, 5)).until(ExpectedConditions.
                presenceOfElementLocated(By.name("some name")));

步骤:3

代码语言:javascript
复制
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分钟才能完全加载。

如果需要更多的细节,请告诉我。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-13 05:51:12

@Jeet -我也经历过同样的问题。在周围工作,我在分享,这真的对我有用

工作解决方案:

代码语言:javascript
复制
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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31221778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档