【问题标题】:capybara choose multiple radio buttons水豚选择多个单选按钮
【发布时间】:2013-05-20 00:59:23
【问题描述】:

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

有什么帮助吗?

【问题讨论】:

    标签: ruby-on-rails testing capybara


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 我假设这些单选按钮位于不同的组中。所以字段 1 有 5 个单选按钮,值从 A 到 E,字段 2 有 5 个单选按钮,字段 3 有 5 个单选按钮,等等。想象一下有 100 个问题的多项选择测试,其中每个问题有 5 个标有 A 的答案、B、C、D 或 E。
      • @iconoclast,也许你是对的,但我真的无法从这个问题中得到答案。
      【解决方案3】:

      你可以试试:

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

      我记不太清了,如果这不起作用,请尝试点击:

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

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

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

      它也应该适用于each

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

      【讨论】:

      • 查看比利陈的评论
      猜你喜欢
      • 2014-01-31
      • 1970-01-01
      • 1970-01-01
      • 2011-03-12
      • 1970-01-01
      • 1970-01-01
      • 2013-02-01
      • 2016-05-28
      相关资源
      最近更新 更多