我正在进行Capybara测试,我坚持以下测试:
page.all("input").each do |s|
if s.value == "E"
choose(s)
end
end
click_button "Save answers"
end
我有超过500个单选按钮,每个按钮都分配了A-E的值。我一直收到错误:
Unable to find radio button #<Capybara::Element tag="input" path="[path to element]">
(Capybara::ElementNotFound)
为什么找不到“输入”标签?它应该工作。我尝试了find
,但是find
返回了一个模棱两可的错误(500场比赛,这在技术上是我想要的)。
我希望capybara能够通过所有输入按钮并选择值为E的那些。
任何帮助?
答案 0 :(得分:2)
我实际上发现了我的问题:
行choose(s)
是给我问题的那一行。
s
是一个单选按钮,而Capybara期望收音机的ID而不是实际的单选按钮本身。
一旦我通过s[:id]
而不是s
,它就有效了!
答案 1 :(得分:0)
您错误地使用了单选按钮。
单选按钮表示只有一个无线电有效。所以你只能选择一个,而不是几个值为“E”的
如果您需要多选,则应使用多重复选框。
答案 2 :(得分:0)
你可以尝试:
all('input[value=E]').map(&:choose)
我不记得确切,如果不起作用请尝试点击:
all('input[value=E]').map(&:click)
如果这不起作用,请尝试使用选择器中的双引号:
all('input[value="E"]').map(&:click)
它也适用于each
。
但请记住@Billy Chan说的话。