Capybara从下拉菜单中选择选项

时间:2014-07-25 20:29:44

标签: ruby

我已经从stackoverflow中查看了许多解决方案,但无济于事。我希望有人可以帮助我理解我的方式的错误。

haml标记看起来像:

.graduation-date-range
            %label Graduation Date Range
            .row-fluid
              .span6
                .control-group
                  .controls
                    .bfh-selectbox{:id => "graduation_start_year", :style => "width: 100%"}
                      = f.hidden_field :graduation_start_date
                      %a.bfh-selectbox-toggle{"data-toggle" => "bfh-selectbox", :href => "#", :role => "button"}
                        %span.bfh-selectbox-option Start Year
                        %b.caret
                      .bfh-selectbox-options
                        %div{:role => "listbox"}
                          %ul.start-years{:role => "option"}
                            - (2012..2018).each do |y|
                              %li
                                %a{"data-option" => y, :href => "#"}= y
                  .help-inline

              .span6
                .control-group
                  .controls
                    .bfh-selectbox{:style => "width: 100%"}
                      = f.hidden_field :graduation_end_date
                      %a.bfh-selectbox-toggle{"data-toggle" => "bfh-selectbox", :href => "#", :role => "button"}
                        %span.bfh-selectbox-option End Year
                        %b.caret
                      .bfh-selectbox-options
                        %div{:role => "listbox"}
                          %ul.end-years{:role => "option"}
                            - (2012..2018).each do |y|
                              %li
                                %a{"data-option" => y, :href => "#"}= y
                  .help-inline

我目前正在尝试采用的解决方案:

select('2012', :from => 'graduation_start_year', :visible => false)

我收到:

  

水豚:: ElementNotFound:
         无法找到选择框" gradu_start_year"

我的理解是标签,名称或ID可以用来选择,但我可能会弄错。

提前感谢那些回复的人。

1 个答案:

答案 0 :(得分:0)

看来这不是一个表单选择框,而是一个html列表,它已经变成了类似于通过javascript和CSS下拉框的东西。

capybara select正在寻找<select><option>标签。这将需要用硒或恶作剧者进行js型测试来测试。