Capybara选择单选按钮无法工作。

6

我可能已经做了这个100次,但是我不明白为什么它告诉我找不到这个对象。以下是我的html代码:

另外,我已经验证了我在正确的页面上,并且当我使用save_and_open_screenshot时可以看到顾问。

HTML

<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>

测试

choose('advisor')

错误

Failure/Error: choose('advisor')

 Capybara::ElementNotFound:
   Unable to find radio button "advisor"

截图

在此处输入图片描述

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

1个回答

9
choose通过名称、ID或标签文本定位单选按钮。详见http://www.rubydoc.info/gems/capybara/Capybara/Node/Actions#choose-instance_method。与指定输入框的value不同(我假设第二个值应该是"client"而不是你写的"advisor"),您可以使用option参数(匹配值)来缩小正确单选按钮的范围,因为您没有ID,而名称会产生歧义。
choose('trade_request_submission[advisor_or_client]', option: 'advisor')

或可能

choose(option: 'advisor')  # if you don't have any other radios with that value

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

choose('Advisor')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接