RemoteWebDriver无法在45000毫秒内绑定到锁定端口7054
本文关键字:锁定 7054 绑定 45000毫 RemoteWebDriver | 更新日期: 2023-09-27 18:02:17
我使用WebDriver的. net绑定通过Grid2并发运行测试。单独运行测试没有问题,但是在通过网格运行多个测试时,偶尔会出现以下错误,一旦出现错误,通常会由于相同的原因导致多个测试失败:
无法在45000毫秒内绑定到锁定端口7054版本号:'2.29.0',修订号:'58258c3',时间:'2013-01-17 22:46:35'系统信息:os.name: 'Windows Server 2008 R2', os.name: 'Windows Server 2008 R2'。弓:"x86",操作系统。版本:'6.1',java。version: '1.7.0_11'驱动信息:司机。版本: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对象中删除了"版本"功能,并且在几次测试运行后没有看到错误表面。我不知道这是否是一个实际的解决方案,但它似乎至少降低了异常的风险。
我发现重新启动服务器通常可以解决这个问题。如果问题仍然存在,请尝试通过网格运行更少的连续测试,或者增加Selenium节点上的内存容量。
我已经遇到这个错误很多次了,我发现我实际上是造成这个错误的原因。
我通常从我的开发计算机运行远程桌面到我的vm,以观察在我的网格上发生的测试。
当我在本地桌面使用Alt-Tab和Shift-Alt-Tab切换窗口时,我已经在Selenium启动FireFox时精确地选择了VM,并且由于我按住了键而无意中导致FireFox以安全模式启动。
当这种情况发生时,Firefox等待确认您确实想要以安全模式启动,并且永远不会完全打开。在您确认之前,所有后续打开FireFox的请求都将失败。
当错误发生时,我习惯于停止测试并重新启动所有从测试生成器开始的东西,直到有一天我首先开始vm,注意到对话框并开始挖掘对话框的原因。就在那时,我意识到是我导致火狐以这种方式开始的。现在我更小心了,再也没有这个问题了。