1

我正在使用 Selenium 2.25 WebDriver

我在查找页面上的元素时遇到问题,有时我的测试用例能够找到元素,有时页面未加载,这是由于页面加载所致,如果我在下面添加此行,它似乎可以正常工作:

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

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

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

4

2 回答 2

2

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

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

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

于 2013-01-30T14:53:11.937 回答
0

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

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

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

这将继续循环,直到显示最后加载的元素并随后中断。捕获元素未找到异常并继续循环,直到元素不显示。

于 2013-02-28T10:25:15.087 回答