我遇到一個問題,那就是在訪問URL時,運行無頭連接到本地Xvfb屏幕的Capybara和capybara-webkit的webkit_server實例掛起。這似乎發生幾分鐘後反覆訪問不同的URL和執行查找程序。 (我使用水豚在香草紅寶石屏幕上刮取應用程序,而不是用於測試。)webkit_server在Ruby中的水豚中運行時會定期掛起
我已經證實,當它掛起時,網站仍然可以訪問(例如,通過命令行上的curl或wget) 。我也嘗試過在Timeout塊中包裝調用訪問和後續查找器的Ruby代碼,以便在等待新URL的60秒後訪問,但任何visit()嘗試在第一次發生後都失敗。解決問題的唯一方法是殺死調用Capybara/capybara-webkit的Ruby進程和webkit_server進程並重新啓動。
當我與strace的webkit_server過程中,我看到輸出這樣的反覆:
clock_gettime(CLOCK_MONOTONIC, {5821, 680279627}) = 0
gettimeofday({1330890176, 712033}, {0, 33052112}) = 0
gettimeofday({1330890176, 712087}, {0, 140736435864256}) = 0
gettimeofday({1330890176, 712137}, {0, 33108640}) = 0
clock_gettime(CLOCK_MONOTONIC, {5821, 680486036}) = 0
clock_gettime(CLOCK_MONOTONIC, {5821, 680530091}) = 0
read(7, 0x1fac1b4, 4096) = -1 EAGAIN (Resource temporarily unavailable)
如果我與strace的Ruby進程調用它,它是掛在read()方法:
Process 3331 attached - interrupt to quit
read(5,
^C <unfinished ...>
Process 3331 detached
我知道Ruby代碼掛在Capybara訪問()方法上。
任何想法,我可以做什麼來解決或糾正這是值得讚賞的。我假設這個問題與webkit_server需要訪問的一些資源有關,但我不確定接下來要嘗試什麼。
謝謝!
此外,對於它的價值,我已經使用webkit_debug水豚司機試圖轉身了水豚自己的日誌記錄。從調試輸出的最後一行是: >>訪問 >> 1 >> 109 >> 的http:// [網站URL] 我試着使用XWD篩選捕獲做的是在這一點上發生: xwd -root -display:1 | xwdtopnm | pnmtopng> screenshot.png 但我只得到一個黑色的矩形。 – 2012-03-04 22:27:07