如何等到没有浏览器的页面加载停止反映?

时间:2017-01-15 20:42:32

标签: selenium selenium-webdriver

使用C#我试图暂停执行,直到登录后加载页面,所以我使用了这段代码:

    for (int second = 0; ; second++)
    {
        if (second >= 60) Assert.Fail("timeout");
        try
        {
            if (driver.FindElement(By.Id("footer")).Displayed) break;
        }
        catch (Exception)
        { }
        Thread.Sleep(1000);
    }

但是我收到系统错误,浏览器Firefox在Thread.Sleep(1000)上显然停止响应;那么我怎么防止呢?

还有另一种暂停执行而不是thread.sleep()的方法吗?

修改: 我现在用的是

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));

但它不间断地执行而不等待10秒!!为什么??

1 个答案:

答案 0 :(得分:0)

一个灵魂使用自定义WebDriverWait,其条件如`titleIs'。这意味着驱动程序将轮询页面预定义的时间,等待页面标题与您预期的匹配。在Java中就是这样:

public Boolean waitForPageIsLoaded(String title) {
        return new WebDriverWait(driver, 60).until(ExpectedConditions.titleIs(title));
}
相关问题