Rails 4 + Materialize:无法找到选择框(Capybara :: ElementNotFound)

时间:2016-03-09 20:42:34

标签: ruby-on-rails-4 selenium capybara materialize

我试图在将html附加到我的表单后进行一些测试运行,该html是使用materialize制作的。我将它放入我的rails应用程序,但现在,我收到Unable to find select box "purchase_customer_gender" (Capybara::ElementNotFound)错误。

在我的步骤定义中,我有

When(/^I select "(.*?)" in "(.*?)"$/) do |value, field|
    select(value, from: field)
end

并且在我的功能中,但也尝试使用purchase[customer_gender],即使标签为'Gender'也是如此。

And I select "M" in "purchase_customer_gender"

我已经尝试了以下内容:

When(/^I select "(.*?)" in "(.*?)"$/) do |value, field|
  within(:css, 'div.input.select.purchase_customer_gender') do
     select(value, from: field)
  end
end

select(value, from: field, visible: false)向我投了(Selenium::WebDriver::Error::ElementNotVisibleError)

page.select(value, from: field)

...最后是我的HTML

<%= simple_form_for :purchase, url: process_payment_url  do |f|%>
...
    <div class="input-field col s6">
       <%= f.input :customer_gender, label: "Gender", collection: ['M', 'F'] , required: true, label_html: { class: "validate" }%>
    </div>
...
<% end %>

在我的浏览器中呈现

<div class="input-field col s6">
    <div class="input select required purchase_customer_gender">
      <select class="select required" name="purchase[customer_gender]" id="purchase_customer_gender">
        <option value="M">M</option>
        <option value="F">F</option>
      </select>
    </div>
</div>

我使用capybara-webkit,cucumber-rails,selenium-webdriver进行测试,使用simple_form进行处理。

提前谢谢。

1 个答案:

答案 0 :(得分:2)

我猜测实体化实际上已隐藏了您的选择框,并在屏幕上用&lt; ul&gt;构建的内容替换了它。和&lt; li&gt; s以启用样式等。您需要查看组成&#34;选择&#34;的实际元素。在真正的浏览器中,你的Capybara行动基于此。根据具体化here的例子,它很可能像

find('div.select-wrapper input', text: 'prompt of the select').click #open the dropdown
find('div.select-wrapper li', text: 'M').click #select the option wanted