Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 Rails 4+物化:找不到选择框(Capybara::ElementNotFound)_Ruby On Rails 4_Selenium_Capybara_Materialize - Fatal编程技术网

Ruby on rails 4 Rails 4+物化:找不到选择框(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

在将html附加到我的表单之后,我正在尝试进行一些测试运行,该html是用materialize生成的。我将其放入rails应用程序中,但现在,我遇到了一个无法找到选择框购买\客户\性别Capybara::ElementNotFound错误

在我的步骤定义中,我有

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。