Ruby on rails 4 Rails 4+物化:找不到选择框(Capybara::ElementNotFound)
在将html附加到我的表单之后,我正在尝试进行一些测试运行,该html是用materialize生成的。我将其放入rails应用程序中,但现在,我遇到了一个无法找到选择框购买\客户\性别Capybara::ElementNotFound错误 在我的步骤定义中,我有Ruby on rails 4 Rails 4+物化:找不到选择框(Capybara::ElementNotFound),ruby-on-rails-4,selenium,capybara,materialize,Ruby On Rails 4,Selenium,Capybara,Materialize,在将html附加到我的表单之后,我正在尝试进行一些测试运行,该html是用materialize生成的。我将其放入rails应用程序中,但现在,我遇到了一个无法找到选择框购买\客户\性别Capybara::ElementNotFound错误 在我的步骤定义中,我有 When(/^I select "(.*?)" in "(.*?)"$/) do |value, field| select(value, from: field) end 在这个功能中,我已经,但也尝试过使用,购买[cus
When(/^I select "(.*?)" in "(.*?)"$/) do |value, field|
select(value, from: field)
end
在这个功能中,我已经,但也尝试过使用,购买[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
selectvalue,from:field,visible:false,这会抛出一个Selenium::WebDriver::Error::ElementNotVisibleError
page.selectvalue,from:字段
…最后是我的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_表单进行公式化
提前谢谢。我猜materialize实际上已经隐藏了您的选择框,并在屏幕上用基于和的构建内容替换了它,以启用样式设置等。您需要在真实浏览器中查看构成选择的实际元素,并以此为基础执行水豚操作。根据materialize的例子,它很可能是
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
我猜materialize实际上已经隐藏了您的选择框,并在屏幕上替换为使用和s构建的东西,以启用样式设置等。您需要在真实浏览器中查看构成您的选择的实际元素,并以此为基础执行水豚操作。根据materialize的例子,它很可能是
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
是的,先生!这就成功了,我没有看到全部情况。Materialize确实呈现了一个hiddenselect,然后使用该信息重写DOM。是的,先生!这就成功了,我没有看到全部情况。Materialize确实呈现hiddenselect,然后使用该信息重写DOM。