2014-06-30 66 views
0

我在我的rails代碼中有一個select2下拉列表,我試圖通過capybara設置和斷言。在Capybara獲取選擇2的選定值

<select class="select optional select2-offscreen" id="bar_effort" name="bar[effort]" tabindex="-1"><option value=""></option> 
    <option value="0">Small</option> 
    <option value="1">Medium</option> 
    <option value="2">Large</option> 
    <option value="3">Extra Large</option> 
</select> 

要設置,我有以下的值(正常工作):

def effort=(effort) 
    @page.select(effort, :from => 'bar_effort') 
end 

一旦值已定,我關閉窗體,當我返回到形式,我想斷言我設定的值仍然被選中。要做到這一點,我嘗試以下操作:

def effort 
    @page.find(:css, '#bar_effort').value #version 1 
    end 

    def effort 
    @page.find(:css, '#bar_effort').text #version 2 
    end 

1版給我"0"當我期待"Small"
2版給我的時候,我期待"Small"

回答

1

對於選擇列表"Small Medium Large Extra Large",該value方法僅當它沒有值屬性時才返回選定的選項文本。

要獲得所選擇的選項的文字,你將需要手動找到選項,並得到其文本:

@page.find('#bar_effort').all('option').find(&:selected?).text 
#=> "Small"