我遇到一个问题,当访问一个URL时,带有Capybara和capybara-webkit的webkit_server实例运行无头连接到本地Xvfb屏幕时挂起.几分钟之后,它会重复访问不同的URL并执行查找器. (我正在使用capybara在vanilla
Ruby中的屏幕抓取应用程序,而不是进行测试.)
我已经确认,当它挂起时,站点仍然可以访问(例如,通过命令行上的curl或wget).我也尝试在超时块中包装调用访问的Ruby代码和后续查找器,以便等待新的URL访问60秒后,任何访问()尝试都会在第一次发生之后失败.解决问题的唯一方法是消除Ruby进程调用Capybara / capybara-webkit和webkit_server进程并重新启动.
当我拖动webkit_server进程时,我会重复地看到这样的输出:
clock_gettime(CLOCK_MONOTONIC,{5821,680279627}) = 0 gettimeofday({1330890176,712033},{0,33052112}) = 0 gettimeofday({1330890176,712087},140736435864256}) = 0 gettimeofday({1330890176,712137},33108640}) = 0 clock_gettime(CLOCK_MONOTONIC,680486036}) = 0 clock_gettime(CLOCK_MONOTONIC,680530091}) = 0 read(7,0x1fac1b4,4096) = -1 EAGAIN (Resource temporarily unavailable)
Process 3331 attached - interrupt to quit read(5,^C <unfinished ...> Process 3331 detached
我知道Ruby代码挂在Capybara visit()方法上.
任何想法我可以做什么来排除故障或纠正这个是赞赏.我假设这个问题与某些资源有关,webkit_server需要访问URL,但我不知道接下来要尝试什么.
谢谢!
解决方法
capybara-webkit 1.0随机挂在整个套间,对我来说也是如此.
简单地添加“薄”是不够的.
但是明确使用Thin handler是有效的.添加到env.rb:
Capybara.server do |app,port| require 'rack/handler/thin' Rack::Handler::Thin.run(app,:Port => port) end
注意瘦使用警告:https://github.com/thoughtbot/capybara-webkit/issues/399#issuecomment-22328028