在“没有服务器响应”错误的构建服务器上,Selenium测试失败

时间:2011-03-11 10:01:50

标签: internet-explorer selenium webdriver

我在VS2010测试项目中有一个简单的Selenium测试,如下所示。

[TestMethod]  
public void MyTestInIE8()  
{  
    IWebDriver driver = new InternetExplorerDriver();  
    try  
    {  
       driver.Navigate().GoToUrl("http://localhost/MyMVC/ABC/DoStuff");
       driver.FindElement((By.Id("Name"))).SendKeys("John");  
       //... run rest of the test  
    }  
    finally  
    {  
       driver.Quit();  
    }  
}  

这在本地服务器上运行良好。但是在构建服务器上它失败并显示以下消息。  ...抛出异常:OpenQA.Selenium.WebDriverException:服务器没有对url http://localhost:4444/session/5e5e9b7a-e05c-40d8-9a20-9cab138b2b87的响应。

问题似乎是在finally子句中调用Quit()方法。我试图传入一个已知的端口号,即InternetExplorerDriver(8080),但它没有任何区别。 Firefox驱动程序在本地和构建服务器上运行良好。我发现有人报告了类似问题,但没有找到可行的解决方案。 http://groups.google.com/group/webdriver/msg/4347971da4d96e97

这是我的配置。 Windows 7专业版SP1,64位 Webdriver - selenium-dotnet-2.0b2。
IE8。

我的构建服务器是带有IE8的Windows Server2008 R2 Standard 感谢。

2 个答案:

答案 0 :(得分:5)

Internet Explorer驱动程序需要对project wiki中记录的IE进行一些配置。您需要确保在构建服务器上正确配置了浏览器。

最近更新了Selenium项目,以便在未正确配置IE驱动程序的情况下抛出更有用的错误。更新到2.0rc2会给您带来更多有用的错误。

答案 1 :(得分:3)

我也遇到了这个问题,我发现解决方案是在使用FindElement()方法之后等待一段时间,然后再对该元素进行操作。

这样的事情:

var element = driver.FindElement(By.Id("Name"))
Thread.Sleep(200);
element.SendKeys("John");

显然,驾驶员会引起一些竞争条件。或者那是我的猜测。