【问题标题】:Interacting with deeply nested radio buttons in Capybara与 Capybara 中深度嵌套的单选按钮交互
【发布时间】:2014-11-05 23:01:00
【问题描述】:

最近,我遇到了一个单选按钮,它似乎嵌套得太深,以至于 Capybara 根本无法与之交互。

HTML 示例:

<div …>
   <div …>
      <div …>
         <ul …>
            <li …>
               <label …>
                 <div …>
                    <input id=”radio1” name=”Section1.Radio1” type=”radio”></input>
                    <label …> </label>  
                 </div>
               </label>
            </li>
         </ul>
      </div>
   </div>
</div>

在点击标签之前我已经省略了大约 10 个以上的深度级别。

我的尝试

我尝试了 capybara 查找器的组合,包括:choose、click_on、find、find_first;所有这些都具有各种 xpath 和 css 组合。这些都会导致一般错误“找不到元素”。我使用的 xpaths 和 css 在 Chrome 和 FF 开发人员工具中进行了测试,没有任何问题。 我得到的唯一突破是使用“所有”查找器。

all(:css, #id_name).first

当我添加“点击”时,这似乎导致找到对象:

all(:css, #id_name).first.click

我在 Capybara 中收到错误 'undefined method `click' for nil:NilClass (NoMethodError)'

也许我应该换个方向。有人有什么想法吗?

【问题讨论】:

  • 我的回答对@Mace 有帮助吗?

标签: html css xpath radio-button capybara


【解决方案1】:

您可以使用 Capybara 提供的#choose 方法。来自docs

找到一个单选按钮并将其标记为选中。单选按钮可以是 通过名称、ID 或标签文本找到。

所以在你的例子中:

page.choose('radio1')

【讨论】:

  • 谢谢,我试过了,还是不行。我更新了上面的帖子。
  • 什么是出于好奇而生成单选按钮?
【解决方案2】:

你试过了吗?

first(:css, 'radio1').click

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 2018-11-30
    相关资源
    最近更新 更多