1

我正在运行 Capybara 测试,但我坚持以下测试:

page.all("input").each do |s|
    if s.value == "E"
        choose(s)
    end
end
click_button "Save answers"
end

我有超过 500 个单选按钮,每个按钮都从 AE 中分配了一个值。我不断收到错误:

 Unable to find radio button #<Capybara::Element tag="input" path="[path to element]"> 
 (Capybara::ElementNotFound)

为什么找不到“输入”标签?它应该起作用了。我试过了find,但是find返回一个模棱两可的错误(500 个匹配项,这在技术上是我想要的)。

我希望 capybara 能够通过所有输入按钮并选择值为 E 的那些。

有什么帮助吗?

4

3 回答 3

2

我实际上发现了我的问题:

这条choose(s)线是给我带来问题的线。 s是一个单选按钮,Capybara 期望的是单选按钮的 id,而不是实际的单选按钮本身。

一旦我通过s[:id]而不是s,它就起作用了!

于 2013-05-19T16:59:23.557 回答
0

你可以试试:

all('input[value=E]').map(&:choose)

我不记得确切,如果这不起作用,请尝试单击:

all('input[value=E]').map(&:click)

如果这不起作用,请尝试在选择器内使用双引号:

all('input[value="E"]').map(&:click)

它也应该适用each

但请记住@Billy Chan 所说的话。

于 2013-05-17T19:06:39.687 回答
0

您错误地使用了单选按钮。

单选按钮表示只有一个单选有效。所以你只能选择一个,而不是几个值为“E”的

如果你需要多选,你应该使用多选框。

于 2013-05-17T18:12:23.463 回答