2012-08-17 51 views
8

我希望有人能幫我解決我在運行我的黃瓜測試時遇到的問題。運行測試時超時錯誤黃瓜/ Watir

我收到以下錯誤:

Timeout::Error (Timeout::Error) 
     C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:146:in `rescue in rbuf_fill' 
     C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:140:in `rbuf_fill' 
     C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:122:in `readuntil' 
     C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:132:in `readline' 
     C:/Ruby193/lib/ruby/1.9.1/net/http.rb:2562:in `read_status_line' 
     C:/Ruby193/lib/ruby/1.9.1/net/http.rb:2551:in `read_new' 
     C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1319:in `block in transport_request' 
     C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1316:in `catch' 
     C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1316:in `transport_request' 
     C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1293:in `request' 
     C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1286:in `block in request' 
     C:/Ruby193/lib/ruby/1.9.1/net/http.rb:745:in `start' 
     C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1284:in `request' 
     C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/default.rb:82:in `response_for' 
     C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/default.rb:38:in `request' 
     C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/common.rb:40:in `call' 
     C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/bridge.rb:598:in `raw_execute' 
     C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/bridge.rb:576:in `execute' 
     C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/bridge.rb:242:in `getScreenshot' 
     C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb:34:in `screenshot_as' 
     C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb:18:in `block in save_screenshot' 
     C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb:18:in `open' 
     C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb:18:in `save_screenshot' 

沒有任何人有任何想法是什麼原因造成的?

在測試套件執行過程中,此錯誤隨機發生。在套件中我會有150個場景,我已經看到這個錯誤發生在不同的階段。例如,可能發生在場景50或場景100中。我通過Jenkins或cmd窗口中的rake文件運行測試,但如果使用任一方法,則會發生錯誤。

我們這裏的測試網站可能會有一點點缺陷,並且在這裏和那裏可能會出現奇怪的超時。但是,一旦此錯誤開始發生,所有其他測試中發生的錯誤都會出現相同的問題。我的場景都不依賴於對方。每個場景通常以步驟I go to the homepage開始 - 在我的.rb文件的此步驟中,我已包含@browser.cookies.clear,因此應該沒有前一場景剩餘的數據。

有沒有其他人遇到過這種情況,如果是的話,你採取了哪些步驟來排序呢?

+0

是否用於所有測試的瀏覽器實例相同?你使用哪個瀏覽器(即它是瀏覽器特定的問題)? – 2012-08-17 13:13:31

+0

嗨賈斯汀 - 我主要在Firefox 14中看到這個問題。我看到了使用Chrome的其他問題,但不是同一個問題。我將安裝Opera並查看是否遇到相同的問題。我開始認爲它可能是Firefox,自更新以來有幾個不同的問題。我會讓你知道它是怎麼回事。謝謝!! – user1523236 2012-08-17 15:31:31

+0

嘿 - 所以我回到Firefox 12,但我仍然看到這個問題。我也看到這個問題發生在Chrome上,所以我猜想它不是瀏覽器。它可能是Flash播放器嗎?我在Firefox和Flash 11.3版本中遇到了很多問題,所以我必須回滾到11.2。但問題仍然存在。 – user1523236 2012-08-20 09:18:22

回答

2

我最近有同樣的問題。由於我看不到您的代碼,我不確定究竟發生了什麼,但使用某種類型的救援工作應該可行。我的問題是使用無頭瀏覽器和救援...

begin 
    browser = Watir::Browser.start site 
    rescue Timeout::Error 
    puts "Timeout Rescue" 
    retry 

讓我知道這是否工作。

+0

這是對我工作。由於AJAX調用,似乎該頁面似乎仍然在加載。我只需要趕上超時並繼續,因爲頁面實際上已經加載。 – genegc 2014-08-08 22:54:38