2

我使用 WebDriver 的 .NET 绑定通过 Grid2 同时运行测试。单独运行测试是没有问题的,但是通过Grid运行多个测试时,偶尔会出现以下错误,而一旦出现,通常多个测试失败,原因相同:

无法在 45000 毫秒内绑定到锁定端口 7054 构建信息:版本:'2.29.0',修订:'58258c3',时间:'2013-01-17 22:46:35' 系统信息:os.name:'Windows Server 2008 R2', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_11' 驱动信息: driver.version: FirefoxDriver

我们已将问题的根源追溯到我们创建 RemoteWebDriver 实例的位置,如下所示:

            var desiredCapabilites = new DesiredCapabilities();

            desiredCapabilites.SetCapability(CapabilityType.BrowserName, "firefox");
            desiredCapabilites.SetCapability(CapabilityType.Platform, new Platform(PlatformType.Windows));
            desiredCapabilites.SetCapability(CapabilityType.Version, "14.0.1");
                try { _driver = new RemoteWebDriver(new Uri("http://qwautomation:4444/wd/hub"), desiredCapabilites, TimeSpan.FromSeconds(180.0)); }
                catch (Exception ex) { Notes.Add("AUTOMATION ERROR: This error originates from MasterSetup.cs (line 47)"); Notes.Add("AUTOMATION ERROR: " + ex.Message); Exception("AUTOMATION ERROR: This error originates from MasterSetup.cs (line 47)"); }

其中,qwautomation 是我们的 Grid Hub 所在的机器。我的假设是集线器正在将测试分派到端口上已经包含 FireFox 实例的节点,或者 JVM 没有正确处理会话(因为我可以在节点机器中看到带有 WebDriver 会话 ID 的文件夹临时文件夹)。我已经为节点和集线器编写了配置文件,我将在下面发布。如果无法绑定到 FireFox 端口,我不知道是否有办法将测试“排队”。

中心

{
        "port": 4444,
        "newSessionWaitTimeout": 30000,
        "nodePolling": 5000,
        "cleanUpCycle": 5000,
        "timeout": 300000,
        "browserTimeout": 0,
        "maxSession": 1
}

节点

{
    "capabilities":
            [
                {
                    "browserName":"firefox",
                    "maxInstances":1                
                }

            ],
    "configuration":
            {
                    "cleanUpCycle":2000,
                    "timeout":180000,
                    "maxSession":5,
                    "hubPort":4444,
                    "hubHost":"qwautomation"
            }
}

编辑:我已经从 DesiredCapabilities 对象中删除了“版本”功能,并且在几次测试运行后没有看到错误表面。我不知道这是否是一个实际的解决方案,但它似乎至少降低了异常的风险。

4

2 回答 2

1

我发现重新启动服务器通常可以解决问题。如果问题仍然存在,请尝试通过网格运行更少的连续测试或增加 Selenium 节点上的内存容量。

于 2013-04-01T20:20:41.310 回答
0

我多次遇到这个错误,我发现我实际上是它的原因。

我通常将远程桌面从我的开发计算机运行到我的虚拟机中,以观察在我的网格上进行的测试。

当我使用 Alt-Tab 和 Shift-Alt-Tab 在本地桌面上切换窗口时,我已经在 Selenium 启动 FireFox 时准确地选择了 VM,并且由于我按住键而无意中导致 Firefox 以安全模式启动。

发生这种情况时,Firefox 会等待确认您确实想以安全模式启动,并且永远不会完全打开。在您确认之前,所有后续打开 FireFox 的请求都将失败。

当错误发生时,我曾经停止测试并从测试生成器开始重新启动一切,直到有一天我首先开始使用虚拟机,注意到对话框并开始挖掘对话框的原因。就在那时,我意识到我导致 FireFox 以这种方式启动。现在我更小心了,不再有问题了。

于 2013-10-21T16:02:14.553 回答