我遇到的问题(我已尝试过互联网上的所有解决方案)是如何从带有水豚的分组选择中选择一个元素。
这是下拉列表:
<%= f.grouped_collection_select(:subcategory_id, Category.order(:name), :subcategories, :name, :id, :name, {}, { :class=> "form-control" }) %>
这是我试图选择它的方法之一。
select("Ortodoncista", from: 'provider[subcategory_id]')
错误
Unable to find option "Ortodoncista" (Capybara::ElementNotFound)
答案 0 :(得分:2)
这个答案对我来说是Capybara: Select an option by value not text @d_rail
首先创建一个帮助器。我把这个助手放在spec/support/utilities.rb
def select_by_value(id, value)
option_xpath = "//*[@id='#{id}']/option[@value='#{value}']"
option = find(:xpath, option_xpath).text
select(option, :from => id)
end
然后使用它:
select_by_value "select_id", "select_option"
在我的情况下,select标记的ID为user_category
,我想要选择的选项为Musician
。所以我的例子是
select_by_value "user_category", "Musician"
答案 1 :(得分:1)
由于我更熟悉CSS选择,我会使用:
这是为了在集合(类别)的子项上找到与 option_key_method (:id)的结果相对应的值的选项元素:< / p>
page.find('select#your-selectbox-id option[value="your-value"]')
这将返回 您的值 找到的所需水豚元素,而不是按选项文本进行搜索。然后你可以做任何你想做的事。例如: .text ,或 .click 。
或者(只是为了记住)这样,如果你想从你的selecbox选择一个给定的选项:
select 'Option Label', :from => 'Selectbox Label Text'
在您的情况下,集合(类别)的子项上的 option_value_method (:name)会产生结果。