2011-03-07 178 views
3

是否有其他人遇到Webdriver延遲問題?我有它與水豚黃瓜運行。填寫表格需要超過30秒甚至幾分鐘的時間。出於某種原因,它將填充一個字段,然後在填寫另一個字段時暫停,兩者都由id引用。Webdriver延遲問題

另外,由於這種延遲,我遇到了超時錯誤。 (但他們是不穩定的......)

有沒有什麼特別的領域。它們出現在頁面加載中,並且此頁面上沒有Ajax。

任何人有任何想法?

這裏的錯誤:

execution expired (Timeout::Error) 
    /Users/me/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/timeout.rb:60:in `rbuf_fill' 
    /Users/me/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/net/protocol.rb:134:in `rbuf_fill' 
    /Users/me/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/net/protocol.rb:116:in `readuntil' 
    /Users/me/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/net/protocol.rb:126:in `readline' 
    /Users/me/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/net/http.rb:2026:in `read_status_line' 
    /Users/me/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/net/http.rb:2015:in `read_new' 
    /Users/me/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/net/http.rb:1051:in `request_without_webmock' 
    /Users/me/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/net/http.rb:1037:in `request_without_webmock' 
    /Users/me/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/net/http.rb:543:in `start' 
    /Users/me/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/1.8/net/http.rb:1035:in `request_without_webmock' 

編輯:這可能與這樣的事實,我有一個Firefox的實例時,我跑了黃瓜測試已經打開。雖然超時的頻率減少了,但我仍然經常得到它們,我認爲這仍然是一個問題。

EDIT2:特徵文件將指定一個步: And I complete personal info

步驟將進一步定義爲其他步驟:

And /^I complete personal info$/ do 
    fill_in('first_id', :with => "foo") 
    fill_in('second_id', :with => "bar") 
    ...more fill_ins... 
end 

水豚會發現first_id有時和我的方案執行的其餘部分精細。其他時候,它會超時。在我看來,這是非常不可預測的。還有些時候,它會發現first_id,但找不到second_id。順便說一下,這些頁面上確實存在這些id

我應該包含有關錯誤的更多信息。這往往會是這樣的:

...all that stuff I included in the error above... 
./features/step_definitions/web_steps.rb:107 
./features/step_definitions/web_steps.rb:11:in `with_scope' 
./features/step_definitions/web_steps.rb:105:in `/^(?:|I)should see "([^"]*)"(?: within "([^"]*)")?$/' 
/my feature file:30:in 'Then we verify stuff we just filled out' 

Then we verify stuff we just filled out與這些額外的步驟定義:

And %{I should see "foo"} 
And %{I should see "bar"} 

我希望這個額外的信息可以幫助!如果您需要其他東西,請在評論中告訴我。

+0

您的意思是webdriver或selenium-webdriver?此外,什麼版本的webdriver,黃瓜,水豚,鐵軌(看起來像紅寶石企業版1.8.7)? – carols10cents 2011-03-21 13:15:44

+0

我很確定它不是你運行的其他Firefox實例。我不時地使用Cucumber,Capybara和WebDriver堆棧超時 - 但它們從不涉及其他正在運行的FF實例。 – awendt 2011-05-23 15:32:22

回答

0

我對webmock並不熟悉,但從回溯來看,這不是不可能是罪魁禍首 - 因爲WebDriver使用HTTP與Firefox進行通信,特別是默認情況下使用Net :: HTTP。

要確認這一點,你可以tell WebDriver to use Curb instead,希望不會受webmock的影響。

+0

我很困惑爲什麼這需要得到證實。另外,我不清楚在默認情況下使用Net :: HTTP意味着什麼。最後,我沒有安裝Curb或net-http-persistent gem。我的意思是,我當然可以安裝它,但是,我不確定爲什麼需要。 – 2011-03-15 21:16:00

+0

對不起,不清楚。 WebDriver默認使用Net :: HTTP將命令發送到用於控制瀏覽器的Firefox擴展。 Webmock AFAIK將猴子補丁Net :: HTTP,這是問題的最可能的原因。如果使用Webmock未觸及的HTTP堆棧來解決問題,我們已經確認Webmock是導致問題的原因,並且要更進一步瞭解發生了什麼。 – jarib 2011-03-17 10:32:50

+0

仔細看後,它看起來像WebMock也會模擬Curb請求。如果您可以提供一個簡單的腳本來重現問題,那將會很有幫助。 – jarib 2011-03-17 10:42:32

0

你遇到的問題是由打破默認Net :: HTTP beheviour的WebMock造成的。此問題現已在WebMock 1.7.0中修復。