页面加载超时 - 使用C#的Selenium Webdriver

时间:2013-01-30 14:44:47

标签: c# selenium selenium-webdriver settimeout page-load-time

我正在使用Selenium 2.25 WebDriver

我遇到了在页面上找到元素的问题,有时候我的测试用例能够找到元素,有时页面不会加载,而且由于页面加载,如果我在下面添加这个元素,似乎喜欢工作:

 driver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(2));

我的问题是,我不希望我的代码与上面的代码行分散,有没有办法让它在一个地方集中化?

非常感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:2)

如果设置超时一次,则会为驱动程序实例的生命周期设置。您无需继续重置它。您可以在创建驱动程序后立即进行设置。

IWebDriver driver = new FirefoxDriver();
driver.Manage().Timeouts.SetPageLoadTimeout(TimeSpan.FromSeconds(2));

使用此超时的唯一警告是,并非每个浏览器都可以完全支持它(IE确实如此,我认为Firefox也是如此,但我不认为Chrome会这样做。)

答案 1 :(得分:1)

您可以尝试这样的解决方法:

观察页面中最后加载的元素并找到其ID(或任何其他标识符)。然后做这样的事情:

 while (true)
        {
            try
            {   
                IWebElement element = driver.FindElement(By.Id(...));
                if (element.Displayed)
                {
                    break;
                }
            }
            catch (Exception)
            {
                continue;
            }
        }

这将循环,直到显示最后加载的元素并在其上断开。捕获元素未找到异常并将循环置于延续中直到元素未显示。