顯然,sleep
或wait_until
不使用水豚的最新版本有效,根據webpageupdates。水豚是否需要睡眠才能工作?
不過,我有一組測試,如果我加入sleep(1)
調用測試,只有在快速計算機上工作。也就是說,測試看起來像:
describe "dosimeters page" do
before do
click_link("Dosimeter Read History", :match=>:first)
end
...
成爲
describe "dosimeters page" do
before do
unix_wait
click_link("Dosimeter Read History", :match=>:first)
end
...
在那裏我已經定義unix_wait
爲:
def unix_wait
case RbConfig::CONFIG['host_os']
when /darwin/
when /linux-gnu/
sleep(1)
end
end
的事情是,我有一個老的Ubuntu 12.04四核在Jenkins上運行這些測試的筆記本電腦,並且在沒有unix_wait
調用的情況下,一切正常。測試在運行Ubuntu 13.10的六核桌面和MacBook Pro筆記本電腦上隨機失敗,但是如果我添加了unix_wait
調用,則測試會通過。
測試失敗本身表明加載失敗(即CSS元素缺少一些運行,但不能在其他人),以及事情正在實際測試時,該網站手動加載工作。
所以這裏有什麼相應的措施?顯然,在測試過程中不允許使用sleep
,也不允許使用wait_until
。然而,睡眠正在發揮作用,但對我來說,這看起來非常粗糙。我應該看看#synchronized
?從我從這些博客文章中收集到的信息,當我撥打電話號碼click_link
時,這些信息已經被調用,並且測試仍然失敗。
這裏接受的協議是什麼?
我要補充的,因爲我認爲這是很重要的:這是所有的JavaScript測試。我使用基於qt4(不是qt5)構建的capybara-webkit。我正在考慮切換到poltergeist或其他JavaScript驅動程序作爲調試步驟。
您可以嘗試使用webdriver進行調試,但我有類似的問題。 –
當我使用ajax時,我遇到了與capybara-webkit相同的問題。我不知道是否可以解決這個問題,但值得一試。 – basgys
你能解釋一下你看到的失敗嗎?我不清楚「錯過的css元素」真正需要什麼。 – Shepmaster