Selenium WebDriver测试失败,System.Net.WebException无法连接

Selenium WebDriver测试失败,System.Net.WebException无法连接,selenium,webdriver,mstest,Selenium,Webdriver,Mstest,我正在开发一套SeleniumWebDriver(不是SeleniumRC,也不使用SeleniumServer)测试,这些测试由对MSTest的命令行调用执行。我已经为我们计划测试的每个浏览器(目前为Chrome、Firefox和IE9)将它们分成了测试类,每个测试类都有一个启动方法,登录到被测试的系统,然后执行请求的测试,还有一个拆卸方法,使用WebDriver.Quit()关闭浏览器 在我的开发机器上,一切都很好,但在我们的构建机器上,类初始化/启动方法执行良好并登录到站点,但一旦第一次实

我正在开发一套SeleniumWebDriver(不是SeleniumRC,也不使用SeleniumServer)测试,这些测试由对MSTest的命令行调用执行。我已经为我们计划测试的每个浏览器(目前为Chrome、Firefox和IE9)将它们分成了测试类,每个测试类都有一个启动方法,登录到被测试的系统,然后执行请求的测试,还有一个拆卸方法,使用WebDriver.Quit()关闭浏览器

在我的开发机器上,一切都很好,但在我们的构建机器上,类初始化/启动方法执行良好并登录到站点,但一旦第一次实际测试启动,测试运行程序就会关闭并显示错误消息:

OpenQA.Selenium.WebDriverException: Unexpected error. System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:59982
很明显,端口的变化取决于测试的浏览器;当我运行整个套件时,在IE、Firefox和Chrome的不同测试端口上会出现错误-每个浏览器有两个错误(因为套件当前对每个浏览器有两个测试)

构建计算机的Windows防火墙已关闭,在运行测试之前检查netstat表明端口未被使用;如果调试测试并在启动代码运行之后但在测试运行之前停止,那么端口当然正在使用中。127.0.0.1和localhost也是相同的

无论我是否通过命令行调用测试,使用VS测试工具在Visual Studio中运行/调试测试,或者执行控制台应用程序(通过Process.Start()调用MSTest),我都会收到相同的错误。在第一次FindElement()调用时引发异常


我从何处开始查找,以找出为什么在生成计算机上而不是在我的开发设备上失败?

当您从Visual Studio运行应用程序时,它会启动侦听特定端口的服务器。就你而言,59982

在对web应用程序运行测试之前,您需要让它自己在测试环境中运行


在开发人员计算机上,应用程序正在该端口上运行。我猜在您的远程计算机上并非如此。

这里的问题是,在尝试在启动过程中实现更健壮的错误处理时,我在登录代码周围的try/catch的最后一个块中调用了拆卸代码,因此,一旦测试线束完成登录,我就关闭并清理WebDriver实例,因此当测试运行时,没有WebDriver可以与之通信


当我在我的开发机器上查看“相同”的代码时,我怀疑实际运行的库中没有该块;我在文章中添加了一个说明,但显示的端口是WebDriver实例的端口,而不是VS2010启动的Cassini服务器。在测试运行期间检查netstat将显示正在使用的端口。也没有解释为什么WebDriver实例启动并登录,但在测试运行时无法连接。显然,我是一个皇家疯子。我能把我的8个小时还给我吗?嗯,我的头骨现在也有点麻木了——我没有做完全相同的事情,但我把浏览器对象隐藏在一个静态变量中,所以有一个测试试图使用在上一个测试中创建(并处理)的浏览器对象。同样的错误。你的错误为我指明了正确的方向。