我使用的硒2.25的webdriver
我在与发现页面上的元素和一些时间我的测试用例能够找到元素和某个页面时不会加载其由于页面加载,如果我添加此线下方,它似乎是一个工作的问题:
driver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(2));
我的问题是,我不希望有我的代码分散与上面的代码行,是有办法,使其在一个地方centerlize?
任何帮助将不胜感激,谢谢!
我使用的硒2.25的webdriver
我在与发现页面上的元素和一些时间我的测试用例能够找到元素和某个页面时不会加载其由于页面加载,如果我添加此线下方,它似乎是一个工作的问题:
driver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(2));
我的问题是,我不希望有我的代码分散与上面的代码行,是有办法,使其在一个地方centerlize?
任何帮助将不胜感激,谢谢!
如果设置了超时一次,它被设置为驱动程序实例的生命周期。 你并不需要保持其重置。 您可以创建驱动程序后,立即设置此。
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;
}
}
这将不断循环,直到它最后加载显示,并随即打破元素。 在没有找到元素异常被捕获和循环投入延续,直到不显示的元素。