与Capybara中深层嵌套的单选按钮进行交互

时间:2014-11-05 23:01:01

标签: html css xpath radio-button capybara

最近,我遇到了一个似乎深深嵌套的单选按钮,而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的发现者组合,包括:选择,click_on,find,find_first ;所有具有各种xpath和css组合。这些都导致一般错误“未找到元素”。我使用的xpath和css在Chrome和FF开发人员工具中进行了测试,没有任何问题。 我得到的唯一一个突破是“全部”发现者。

all(:css, #id_name).first

当我添加'click'时,这似乎会导致找到对象:

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

我在Capybara中收到错误'未定义的方法`click为nil:NilClass(NoMethodError)'

也许我应该走另一个方向。有人有主意吗?

2 个答案:

答案 0 :(得分:0)

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

  

找到一个单选按钮并将其标记为已选中。单选按钮可以是   通过姓名,身份证或标签文本找到。

所以在你的实例中:

page.choose('radio1')

答案 1 :(得分:0)

你试过这个吗?

first(:css, 'radio1').click