2016-02-22 54 views
1

我的HTML是水豚 - 如何查看是否選擇了一個下拉元素?

<select id="auto_policy_autos_attributes_0_ownership" name="auto_policy[autos_attributes][0][ownership]"> 
    <option value="Owned">Owned</option> 
    <option value="Financed">Financed</option> 
    <option value="Leased" selected="selected">Leased</option></select> 

,我可以選擇多達

find('select#auto_policy_autos_attributes_0_ownership option[value="Leased"]') 

正確的,但我怎麼看它是否得到遏制?

我試圖

find('select#auto_policy_autos_attributes_0_ownership option[value="Leased" selected="selected"]') 

,但我得到

Selenium::WebDriver::Error::InvalidSelectorError: invalid selector: 
An invalid or illegal selector was specified 

我希望爲

'select#auto_policy_autos_attributes_0_ownership option[value="Leased"], selected')).to be 

但我得到一個假陽性的

'select#auto_policy_autos_attributes_0_ownership option[value="Owned"], selected')).to be 

返回true,儘管我已經選擇與

select 'Leased', from: 'auto_policy_autos_attributes_0_ownership' 

租用我可以看到在瀏覽器中運行。

回答

1

可以使用be_selected matcher

expect(@session.find('select#auto_policy_autos_attributes_0_ownership option[value="Leased"]')).to be_selected 
1

一種選擇是

expect(has_select?('auto_policy_autos_attributes_0_ownership', selected: 'Leased')).to be true 
+0

但我更喜歡alecxe,因爲be_selected更具描述性,尤其是當它失敗時(當它計數時!) –

0

這也正是水豚have_select匹配是專爲

expect(page).to have_select('auto_policy_autos_attributes_0_ownership', selected: 'Leased') 

描述你」重新檢查 - 具有特定選項的特定選擇元素,並提供fo在發生故障時提供一個很好的錯誤信息。

如果你真的要堅持與謂詞匹配,你也可以做

expect(find(:option, 'Leased')).to be_selected 

儘管該選項可以在任意選擇頁面上,除非您使用中的塊或範圍的查找到特定的選擇。

相關問題