我正在开发一套 Selenium WebDriver(不是 Selenium RC,也不使用 Selenium-Server)测试,这些测试是通过命令行调用 MSTest 来执行的。我已将它们分解为我们计划测试的每个浏览器(目前是 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 Test 工具从 Visual Studio 中运行/调试测试,还是执行通过 Process.Start() 调用 MSTest 的控制台应用程序,我都会遇到相同的错误。第一次调用 FindElement() 时会引发异常。
我可以从哪里开始找出为什么在构建机器上失败而不是在我的开发机器上失败的原因?
这里的问题是,在启动期间尝试实现一些更强大的错误处理时,我在登录代码周围的 try/catch 的 finally 块中调用了 Teardown 代码,因此一旦测试工具完成登录我正在关闭并清理 WebDriver 实例,因此当测试运行时,没有 WebDriver 可以与之通信。
我怀疑当我在我的开发机器上查看“相同”代码时,这些库是actually跑步没有那个障碍。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)