<select class="business_group" multiple="multiple" name="SelectedBusinessGroups">
<option value="Partners">Partners</option>
<option value="Press">Press</option>
<option value="ProductToolbox">Product Toolbox</option>
<option selected="selected" value="Promotional">Promotional</option>
<option value="Sponsors">Sponsors</option>
</select>
由于名为:selected
的属性表示单击该选项。
我想检查选项列表中是否选择了“促销”。
我怎么能这样做?
我试过
assert @browser.option(:text => "Promotional").attribute_value("selected").exists? == true
但它不起作用。
答案 0 :(得分:4)
您有几个选项可以检查所选的选项。
选择选项#?
选项有一个内置方法可以告诉您它们是否被选中 - 请参阅Option#selected?
。
@browser.option(:text => "Promotional").selected?
#=> true
@browser.option(:text => "Press").selected?
#=> false
使用Select#selected?
选择列表有一个内置方法,用于检查是否选择了选项 - Select#selected?
。请注意,这仅根据文本检查选项。
ddl = @browser.select(:class => 'business_group')
ddl.selected?('Promotional')
#=> true
ddl.selected?('Press')
#=> false
使用Select#selected_options
Select#selected_options
方法将返回所选选项的集合。您遍历此集合以查看是否包含所需的选项。这允许您通过多于其文本检查选项。
selected = @browser.select(:class => 'business_group').selected_options
selected.any?{ |o| o.text == 'Promotional' }
#=> true
使用Element#attribute_value
如果属性存在,attribute_value
方法将返回属性值作为字符串。如果该属性不存在,则返回nil。
#Compare the attribute value
@browser.option(:text => "Promotional").attribute_value("selected") == 'true'
#=> true
#Compare the attribute value presence
@browser.option(:text => "Promotional").attribute_value("selected").nil? == false
#=> true