【发布时间】:2012-05-23 07:36:33
【问题描述】:
我正在使用 Selenium 2.20 WebDriver 创建和管理带有 C# 的 firefox 浏览器。要访问一个页面,我使用以下代码,在访问 URL 之前设置驱动程序超时:
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); // Set implicit wait timeouts to 5 secs
driver.Manage().Timeouts().SetScriptTimeout(new TimeSpan(0, 0, 0, 5)); // Set script timeouts to 5 secs
driver.Navigate().GoToUrl(myUrl); // Goto page url
问题是有时页面加载需要很长时间,而且使用 selenium WebDriver 加载页面的默认超时似乎是 30 秒,这太长了。而且我不相信我设置的超时适用于使用 GoToUrl() 方法加载页面。
所以我试图弄清楚如何设置页面加载超时,但是,我找不到任何实际有效的属性或方法。当我点击一个元素时,默认的 30 秒超时似乎也适用。
有没有办法将页面加载超时设置为特定值,这样当我调用 GoToUrl() 方法时,它只会等待我指定的时间才能继续?
【问题讨论】:
-
您确定
GoToUrl()等待页面加载吗?我的经验是不会。但这只是一种感觉,而不是事实。 -
是的,我 100% 确定调用 GoToUrl() 会阻止执行,直到页面完全加载完成,并且我测量了调用此方法的默认超时 30 秒,30 秒后执行将继续,我正在尝试以某种方式减少 30 秒的默认超时时间。
-
我已经发布了类似的问题:stackoverflow.com/questions/11958701/…
-
@TorbjörnKalin 它确实会阻塞,直到页面加载到浏览器抛出 onReady 事件为止。如果有 post js 和 ajax ......那“页面加载”知识没有任何意义。
标签: c# selenium timeout webdriver wait