水豚选择多个单选按钮

时间:2013-05-17 17:38:32

标签: ruby-on-rails testing capybara

我正在进行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的那些。

任何帮助?

3 个答案:

答案 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说的话。