水豚选择单选按钮不起作用

Bit*_*ise 6 html rspec capybara

我可能已经这样做了 100 次,但我一生都无法理解为什么它告诉我它找不到这个对象。这是我的html:

PS 我已经验证我在正确的页面上,并且当我执行操作时我可以看到顾问save_and_open_screenshot

超文本标记语言

<div class="panel">
  <%= form.label :advisor, class: "panel__label" %>
  <%= form.radio_button :advisor_or_client, "advisor", class: "panel__input__radio advisor" %>
</div>

<div class="panel">
  <%= form.label :client, class: "panel__label" %>
  <%= form.radio_button :advisor_or_client, "advisor", class: "panel__input__radio client" %>
</div>
Run Code Online (Sandbox Code Playgroud)

测试

choose('advisor')
Run Code Online (Sandbox Code Playgroud)

错误

Failure/Error: choose('advisor')

 Capybara::ElementNotFound:
   Unable to find radio button "advisor"
Run Code Online (Sandbox Code Playgroud)

截屏

在此输入图像描述

根据提供的信息,如何选择功能规格的单选按钮?

Tho*_*ole 9

choose按名称、id 或标签文本定位单选按钮 - http://www.rubydoc.info/gems/capybara/Capybara/Node/Actions#choose-instance_method。而不是您指定value输入的(我假设第二个值应该是“客户端”而不是您拥有的“顾问”)。由于您没有 ids,并且名称不明确,因此您可以使用参数option(匹配值)来缩小范围以找到正确的无线电。所以

choose('trade_request_submission[advisor_or_client]', option: 'advisor')
Run Code Online (Sandbox Code Playgroud)

或潜在地

choose(option: 'advisor')  # if you don't have any other radios with that value
Run Code Online (Sandbox Code Playgroud)

另一种选择是指定标签文本,但这需要将 id 添加到与标签上的属性input匹配的元素中,以正确链接它们,在这种情况下,您可以这样做for

choose('Advisor')
Run Code Online (Sandbox Code Playgroud)