我使用.NET绑定WebDriver通过Grid2同时运行测试。单独运行测试没有问题,但是当通过网格运行多个测试时,偶尔会发生以下错误,并且一旦出现错误,通常会有多个测试失败,原因相同:
无法在45000 ms内绑定到锁定端口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托管的机器。我的假设是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对象中删除了“Version”功能,并且在多次测试运行后没有看到错误表面。我不知道这是否是一个实际的解决方案,但它似乎至少可以降低异常的风险。
答案 0 :(得分:1)
我发现重启服务器通常可以解决问题。如果问题仍然存在,请尝试通过网格运行较少的连续测试或增加Selenium节点上的内存容量。
答案 1 :(得分:0)
我多次遇到过这个错误,我发现其实际上就是它的原因。
我通常将远程桌面从我的开发计算机运行到我的VM中,以观察我的网格上的测试。
当我使用Alt-Tab和Shift-Alt-Tab切换本地桌面上的窗口时,我已经完成了选择虚拟机,而Selenium正在启动FireFox并且无意中导致Firefox以安全模式启动,因为我按住了键
当发生这种情况时,Firefox会等待确认您确实要以安全模式启动并且永远不会完全打开。在您确认之前,所有后续打开FireFox的请求都将失败。
当错误发生时,我常常停止测试并从测试生成器开始重新启动所有内容,直到有一天我开始使用虚拟机,注意到对话框并开始挖掘对话框的原因。就在那时我才意识到我正在让FireFox以这种方式开始。现在我更加小心,不再有问题了。