Ruby on rails 水豚罐头';在下拉列表中找不到元素

Ruby on rails 水豚罐头';在下拉列表中找不到元素,ruby-on-rails,testing,rspec,capybara,Ruby On Rails,Testing,Rspec,Capybara,我正在尝试对一个特性规范进行故障排除,我正在编写这个特性规范来学习Rails和测试。这是Rails 4应用程序的编辑规格。我用的是RSpec和水豚 问题是: Capybara无法从表单上的两个下拉列表中找到元素。以下是我的表单源代码的相关部分: <div class="field"> <label for="appointment_member_id">Member</label><br> <select id="appointment_me

我正在尝试对一个特性规范进行故障排除,我正在编写这个特性规范来学习Rails和测试。这是Rails 4应用程序的编辑规格。我用的是RSpec和水豚

问题是: Capybara无法从表单上的两个下拉列表中找到元素。以下是我的表单源代码的相关部分:

<div class="field">
<label for="appointment_member_id">Member</label><br>
<select id="appointment_member_id" name="appointment[member_id]">
<option value="1">Callis Callis</option>
<option value="2">Rachale Rachale</option>
<option value="3">Hal Hal</option>
<option value="4">Kallis Kallis</option>
<option value="5">Earle Earle</option>
<option value="6">Rudy Rudy</option></select>
</div>
<div class="field">
<label for="appointment_trainer_id">Trainer</label><br>
<select id="appointment_trainer_id"
name="appointment[trainer_id]"> <option value="1">Jacob Jacob</option>
<option value="2">Michele Michele</option>
<option value="3">Alex Alex</option>
<option value="4">Yanni Yanni</option>
<option value="5">Upton Upton</option>
<option value="6">Willham Willham</option></select>
</div> 
结果是一个Capybara::ElementNotFound错误。以下是错误消息的全文:

使用更正的信息成功更新约会(失败-1)

失败:

1) Editing appointments updates an appointment successfully with corrected information
 Failure/Error: select('4', :from => 'appointment_member_id')
 Capybara::ElementNotFound:
   Unable to find option "4"

我研究了水豚的问题和文档,还有一个类似问题的Stackoverflow帖子。海报解决了这个问题,但不记得他是怎么做到的。我很困惑,为什么水豚无法从下拉列表中找到成员和培训师?选项值和名称在窗体上显示为可见。我错过了什么?谢谢你的帮助

水豚模拟用户行为。因此,请尝试使用用户看到的内容,而不是ID和值:

select 'Kallis Kallis', from: 'Member'
select 'Michele Michele', from: 'Trainer'

您可以尝试下面的代码,也可以指定div和id,并用您选择的任何id替换
“div.field”

within "div.field" do
  find("option[value='4']", text: 'Yanni Yanni').select_option
  click_button 'your_submit_button'
end

谢谢你的回复;不幸的是,它没有解决问题。我得到了和以前一样的未找到的Capybara元素错误。还有什么想法吗?试试“保存并打开页面”方法。它保存页面。然后您可以查看页面的真正来源。尝试保存和打开页面-Capybara正在使用我的选项哈希在页面上放置值,但是正在从FactoryGirl对象填充成员和培训师字段。我之所以知道这一点,是因为这些名字是由冒牌珠宝商生成的。我所做的一切似乎都不会导致水豚从下拉列表中选择成员或培训师。我想知道这个问题是否与测试环境有关。如何在测试环境中填充下拉列表?其他想法?可能页面不是有效的HTML,而且capybara找不到元素。表单是由Rails脚手架生成器自动创建的。没有Javascript或其他非HTML代码。Capybara发现字段标签正常,但找不到值,这些值是基于集合的选择列表(即下拉菜单中的成员和培训师名称)。有趣的问题,谢谢!我会尽可能早地尝试代码。没问题!让我知道它是如何进行的——我遇到了完全相同的问题,似乎选择框选项可能非常挑剔。如果这个解决方案不起作用,那么我可以为您提供另一个可能的解决方案。代码生成了以下错误:失败/错误:在“div.field”中执行Capybara::暧昧:暧昧匹配,找到了5个与css“div.field”匹配的元素可能有点进步。水豚似乎在看,但很困惑。有什么想法吗?很好!这绝对是进步。尝试分配一个div的ID并以这种方式引用它,以消除不明确的引用错误,并查看我们是否取得了正确的进展抱歉,我是一个新手…如何“分配一个div的ID”来测试这一点。听起来像是基本的HTML/CSS,但不记得怎么做。
within "div.field" do
  find("option[value='4']", text: 'Yanni Yanni').select_option
  click_button 'your_submit_button'
end