2015-10-14 44 views
1

我想測試一個簡單的標題複選框檢查表中的所有複選框。爲什麼javascript不檢查我的複選框?

測試低於:

scenario 'select all enrolments', js: true do 
    check 'all_enrolment_presentations' 
    expect(page).to have_css('.enrolment-presentation-listing input[type="checkbox"]:checked', count: 1) 
end 

這種失敗,但如果我更改方案有點

scenario 'select all enrolments', js: true do 
    sleep 3 
    check 'all_enrolment_presentations' 
    expect(page).to have_css('.enrolment-presentation-listing input[type="checkbox"]:checked', count: 1) 
end 

它的工作原理。

我測試了一些其他選擇器,他們都有相同的影響。我不想添加睡眠語句來獲得這樣的東西。我一定在做一些不正確的事情。

當我運行沒有sleep子句的測試時,它似乎找到了控件(它被突出顯示),但它沒有被檢查。爲我的意思查看截圖。

enter image description here

我的問題是,爲什麼會出現這種情況,我怎麼能解決我的問題?

注意我用的導軌4.2.4和2.5.0水豚

+2

什麼JS綁定到全選複選框?我的猜測是這是你檢查框和JS初始化之間的競爭條件。您也可以嘗試點擊框,而不是檢查它。找到(...)。點擊 –

回答

0

經過一番深入調查的錯誤實際上是由從2.45.0版本升級硒的webdriver到2.48.1造成的。我沒有足夠的時間調查寶石內部的根源。

0

你必須等到水豚才能執行點擊操作。

所以,


。使用sleep

例如sleep 5有等待5秒鐘


。更改水豚默認的等待時間使用

`Capybara.default_wait_time = some_value` 
+0

默認時間已經設置。使用睡眠並不是一個很好的解決方案,因爲它會導致您的測試等待額外的睡眠時間。這水豚功能不應該需要任何魔術才能使它工作。 –

相關問題