2015-07-10 51 views
0

我编写了一个控制台应用程序(Visual Studio 2013,C#),用硒测试我的网站。Selenium C#,WebDriverWait timeout

这是我的代码

public static void Main(string[] args) 
    { 
     IWebDriver driver = new FirefoxDriver(); 
     driver.Navigate().GoToUrl("myUrl"); 

     WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(40)); 
     wait.Until(ExpectedConditions.ElementExists(By.Id("wsConnected"))); 

     driver.Quit(); 
    } 

wsConnected是一个div我把页面与页面加载(小于10秒)后的jQuery。我使用的硒2.46.0与Firefox v39.0

当然这是行不通的,因为我得到60秒后司机超时错误

,任何帮助将是非常赞赏。

谢谢, 的Alessandro

[UPDATE] wait.Until失败,出现此例外: 类型 'OpenQA.Selenium.WebDriverException' 发生在WebDriver.Support.dll的未处理的异常。 附加信息:对URL http://localhost:7056/hub/session/86847fde-462b-47be-85e1-31cd51791dc3/element的远程WebDriver服务器的HTTP请求在60秒后超时。

[UPDATE 2] 我降级硒至2.43和Firefox到V32,没有超时,无尽的等待

+0

那么,加载时wsConnected不存在于你的页面中?并且在页面加载后显式插入,对吧? –

+0

是的,那是加载$('body')。append('

'); –

+0

你可以在导航到URL后尝试添加一个短暂的睡眠,可能是10秒(假设10秒是插入div的最长时间),看看这是否有效,以后你/我们可以优化相同的工作。 –

回答

0

尽量避免使用ExpectedConditions的。
错误原因将更加清晰。
使用最新版本的硒(Selenium支持类2.48.2和来自nuget包的WebDriver 2.48.2)对下一个代码进行了测试。即使元素在10秒内可见,它也能正常工作。

IWebDriver driver = new FirefoxDriver(); 
driver.Navigate().GoToUrl("https://www.google.ru/"); 
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(40)); 
wait.Until(d => d.FindElement(By.Id("logocont"))); 
driver.Quit(); 

如果没有帮助,请提供超时异常的内部异常。

相关问题