Don*_*ato 5 ruby rspec ruby-on-rails capybara
我有一个简单的引导模式,当用户单击链接时,它会显示一个带有下拉菜单和提交按钮的表单。我尝试在 Rspec 功能测试中使用 Capybara 从下拉菜单中选择选项,但它找不到下拉菜单。
功能规格:
scenario "User searches records" do
visit my_records_path
click_link 'Search Records'
within('#practiceSearchModal') do
select('Pennsylvania', from: '#state_search')
click_on('Submit')
end
end
Run Code Online (Sandbox Code Playgroud)
页面上的模态:
<div class="modal fade in" id="practiceSearchModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="false" style="display: block;"><div class="modal-backdrop fade in" style="height: 654px;"></div>
<div class="modal-dialog" style="width: 750px;">
<div class="modal-content">
<select name="state" id="state_search" class="form-control">
<option value="">Select</option>
<option value="Pennsylvania">Pennsylvania</option>
<option value="New York">New York</option>
</select>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
这是我在 Capybara 中遇到的错误,它找不到 ID 为 state_search 的选择菜单:
Capybara::ElementNotFound:
Unable to find visible select box "#state_search" that is not disabled within #<Capybara::Node::Element tag="div" path="/html/body/div[1]/div[2]/div[4]/div[1]/div[2]/div/div[1]/form/div">
# /home/myuser/.rvm/gems/ruby-2.1.7@core/gems/capybara-2.18.0/lib/capybara/node/finders.rb:314:in `block in synced_resolve'
Run Code Online (Sandbox Code Playgroud)
但我在页面上看到了该元素:
为什么水豚点击链接后找不到我在屏幕上看到的元素?
这from选项采用 id,而不是 CSS 选择器 -
select('Pennsylvania', from: \xe2\x80\x98state_search')\nRun Code Online (Sandbox Code Playgroud)\n