首页 文章

水豚选择多个单选按钮

提问于
浏览
1

我正在进行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)

为什么找不到"input"标签?它应该've worked. I'已尝试 find ,但 find 返回一个模棱两可的错误(500匹配,这在技术上是我想要的) .

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

有帮助吗?

3 回答

  • 2

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

    choose(s) 行是给我问题的那一行 . s 是一个单选按钮,而Capybara期望收音机的ID而不是实际的单选按钮本身 .

    一旦我通过 s[:id] 而不是 s ,它就有效了!

  • 0

    你错误地使用了单选按钮 .

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

    如果需要多选,则应使用多重复选框 .

  • 0

    你可以尝试:

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

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

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

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

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

    它也应该与 each 一起使用 .

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

相关问题