Rspec PhantomJS断断续续地拒绝连接

Rspec PhantomJS断断续续地拒绝连接,rspec,webdriver,phantomjs,watir-webdriver,ghostdriver,Rspec,Webdriver,Phantomjs,Watir Webdriver,Ghostdriver,我正在使用Ruby 2.1.0、watir webdriver、rspec和PhantomJS 1.9.8。操作系统是Linux tester 3.2.0-4-686-pae#1 SMP Debian 3.2.65-1+deb7u1 i686 GNU/Linux 我通过Watir::Browser.new运行PhantomJS,并提供以下命令行参数:--ignore ssl errors=true--ssl protocol=any--debug=true--cookies file=/tmp/

我正在使用Ruby 2.1.0、watir webdriver、rspec和PhantomJS 1.9.8。操作系统是Linux tester 3.2.0-4-686-pae#1 SMP Debian 3.2.65-1+deb7u1 i686 GNU/Linux

我通过
Watir::Browser.new
运行PhantomJS,并提供以下命令行参数:
--ignore ssl errors=true--ssl protocol=any--debug=true--cookies file=/tmp/cookies.txt

有一个规范文件在一开始就间歇性地失败(我想说,很可能失败而不是通过):
连接被拒绝-为“127.0.0.1”端口8910连接(2)
。同时,
netstat-tulpan
显示:

...
tcp        0      0 127.0.0.1:43695         127.0.0.1:8910          TIME_WAIT   -
tcp        0      0 127.0.0.1:43723         127.0.0.1:8910          TIME_WAIT   -
tcp        0      0 127.0.0.1:43743         127.0.0.1:8910          TIME_WAIT   -
tcp        0      0 127.0.0.1:43677         127.0.0.1:8910          TIME_WAIT   -
tcp        0      0 127.0.0.1:43740         127.0.0.1:8910          TIME_WAIT   -
...
总共大约90个端口。
rspec
退出后,它们将保持打开状态。我对这次失败的间歇性性质感到困惑。还有其他人遇到过同样的问题吗?任何建议、推荐、链接等都将不胜感激。多谢各位



UPD:我仔细看了一下,发现在某个时间点,PhantomJS开始删除从webdriver:->[SYN]获得的连接,我不知道这是否能解决您的问题,但它可能解释了您在netstat中看到的情况。请注意,显示的状态为
TIME\u WAIT
。查看netstat上的文档表明,这是在端口关闭后一段时间内显示的常见状态

活动关闭后,客户端进入此状态的等待时间

注意:套接字长时间处于等待状态是正常的 一段时间。RFC793中规定的时间是最大时间的两倍 段生存期(MSL)。MSL指定为2分钟。那么,一个插座 可能处于时间等待状态长达4分钟。一些系统 为MSL实现不同的值(少于2分钟)

请注意,这来自于,因此MSL的长度可能与Debian Linux上的不到2分钟,但其余部分基于协议规范,因此将适用于正确实现该规范的任何操作系统


您的代码打开和关闭“浏览器”对象多少次?也许这与此有关?你能用掉所有的连接吗?对于真正的浏览器,我们倾向于在测试运行开始时打开浏览器,只在测试结束时关闭浏览器,主要是为了节省浏览器本身的启动/关闭时间。如果您在测试中没有这样做,您可能想尝试一下,看看它是否解决了您的问题。

谢谢您的回答。这就是问题所在——我只启动了一次浏览器,而大量打开的端口可能是核心问题(如果存在一些限制的话)。这个测试和我的预期测试和其他测试没有什么不同,但是他们通过了,而这个测试没有。webdriver和phantomjs之间的连接是由webdriver处理的。(watir只是调用webdriver api并传递适当的参数)所以我将为您编辑和添加一些webdriver标记,也许有更专业的人可以提供帮助。是的,这看起来真的像是PhantomJS的某种问题。奇怪的是,您只有一个spec文件似乎有问题,这让您怀疑网页上是否发生了一些不同的事情,或者是客户端JS代码中出现了幻影JS问题。