2014-10-28 30 views
2

我有一個複選框的列表,使用collection_check_boxes創建。如何輕鬆取消選中與水豚的所有複選框

當在功能/集成測試測試此,使用水豚,並希望通過取消選中他們,然後選中我要檢查那些「正常化」的頁面:

within_fieldset('Product') do 
    # Reset all checkboxes for a level playingfield. 
    # What to do? 

    # Mark checkboxes for products enabled 
    products.each do |product| 
    check products 
    end 
end 

這是一個如此 - 所謂的PageObject,因此我想要有點泛化:是否在實際測試中,我會知道哪些字段被選中並取消選中它們。但是這個更通用的幫手沒有這種知識。

我已經嘗試了一些沿着find('input[type=checkbox]').all {|checkbox| uncheck(checkbox) }的行,這應該工作,但似乎相當複雜的手頭任務,不是?

有沒有一些uncheck_all()?,我錯過了,在水豚?在開始fill_in表單之前,將「重置」水豚中的一個表格成爲空白狀態是否是一種常見模式?

+1

我認爲你的解決方案並不複雜。但是如果你打算大量使用它,那麼你可以將它打包到一個函數中,並在需要時調用它 – Fer 2014-10-28 09:23:39

回答

6

試試這個:

all('input[type=checkbox]').each do |checkbox| 
if checkbox.checked? then 
    checkbox.click 
end 
end 
+0

我已經在我的系統上測試過了,它的工作完全正常,就像你期待的那樣@ berkes.Let me know if它仍然不同於你的要求。 – 2014-10-30 18:18:05

+0

如果能解決您的問題,請您接受這個答案,否則讓我知道這個問題。 – 2014-11-04 14:00:22

2

這幾乎是相同的解決方案,但可能會稍微更清晰,我認爲還與自定義的JS複選框。據我所知,沒有什麼像uncheck_all方法。

all("input[type='checkbox']").each{|box| box.set('false')}

相關問題