Rspec Capybara抛出随机Capybara::Poltergeist::DeadClient:错误

Rspec Capybara抛出随机Capybara::Poltergeist::DeadClient:错误,rspec,capybara,Rspec,Capybara,当同时运行使用Capybara的功能测试时,无论是运行整个套件,还是通过rspec一起运行2个spec文件,我都会遇到间歇性错误: Capybara::Poltergeist::DeadClient: PhantomJS client died while processing 在试图修复这些问题的时候,它已经消失了很多次,每次都有十几次没有发生 我尝试了以下方法: # .rspec --order rand # capybara config Capybara.register_d

当同时运行使用Capybara的功能测试时,无论是运行整个套件,还是通过
rspec
一起运行2个spec文件,我都会遇到间歇性错误:

 Capybara::Poltergeist::DeadClient:
   PhantomJS client died while processing
在试图修复这些问题的时候,它已经消失了很多次,每次都有十几次没有发生

我尝试了以下方法:

# .rspec
--order rand

# capybara config
Capybara.register_driver :custom do |app|
  Capybara::Poltergeist::Driver.new(app,
    # setting js_errors to true or false makes no difference
    js_errors: false, 
    timeout: 180
  )
)

RSpec.configure do |config|
  config.after(:each, :js) do
    Capybara.reset_sessions!
    Capybara.use_default_driver
  end
end

我也尝试过rspec retry,但这似乎没有任何帮助。

确保您使用的是最新的PhantomJS(目前为2.1.1,还有2.5测试版),并确保您有足够的可用内存。我有2.1.1(最新版本可通过自制获得)在运行规范时,可以释放6GB内存。实际上,您唯一能做的就是使用url_白名单/黑名单设置来阻止正在加载的任何不需要的资源——不幸的是,PhantomJS已经有一段时间没有更新了,并且存在一些稳定性问题。希望在2.5发布后,情况会有所改善。