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

我正在使用Selenium 2.25 WebDriver

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

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

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

任何帮助将不胜感激,谢谢!

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

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

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

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

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

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

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