我正在开发一套通过命令行调用 MSTest 执行的 Selenium WebDriver(不是 Selenium RC 并且不使用 Selenium-Server)测试。我已经为我们计划测试的每个浏览器(Chrome、Firefox 和 IE9,目前)将它们分解为测试类,每个测试类都有一个启动方法,该方法登录到被测系统,然后执行请求的测试以及使用 WebDriver.Quit() 关闭浏览器的 TearDown 方法。
在我的开发机器上,一切都是笨拙的,但在我们的构建机器上,类初始化/启动方法执行得很好并登录到站点,但是一旦第一个实际测试开始,测试运行器就会关闭并显示错误消息:
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() 调用时引发异常。
我可以从哪里开始找出为什么这在构建机器上而不是在我的开发盒上失败?