在本地运行的selenium网格上,我有一套大型的SpecFlow测试正在执行。网格只为最多10个firefox实例配置了一个主机。测试是从NUnit连续运行的,因此我希望一次只需要一个会话。
但是,当运行了大约一半的测试用例时,中心的控制台窗口报告输出将开始报告。
信息:节点主机url没有空闲插槽。
为什么?
所有的测试用例都与一个关闭和处理TearDown的WebDriver方法相关联,尽管我还没有验证每个测试都没有失败。我希望一次最多能有一个会议活跃起来。我如何才能找到阻止主机回收这些会话的原因?
编辑#1:
我认为我已经缩小了问题的原因--这确实与不关闭WebDriver有关。在解压缩方法中有一些AfterScenario属性就是要这样做的,但是它们只匹配场景的子集,因为它们上有参数。移除该参数,以便使teardown与每个场景关联,从而修复会话耗尽(或似乎是这样),但是有些测试希望重新获取现有会话,因此我必须分别修复它们。
一些背景:这个测试套件是作为“完整”解决方案的一部分继承下来的,而且它一直保持不变,从交付开始就没有运行过。我要把它重新投入使用,并且必须发现它的古怪之处--我没有写任何这些。我与Selenium和SpecFlow都有过短暂的接触,但从来没有一起使用过。
发布于 2014-07-18 15:15:43
这个问题最终被证明是面膜级的失败--主要是因为我没有注意到它。一些日志代码试图写入一个不存在的文件,抛出的异常绕过了对Dispose()的WebDriver调用,然后在没有错误报告的情况下被吞食。因此,会议在附近徘徊。删除日志记录代码修复了会话耗尽。
发布于 2014-06-17 13:18:32
查看节点(远程桌面)并查看框上发生了什么。听起来好像你的测试没能正常结束它的会话。
https://stackoverflow.com/questions/24264840
复制相似问题