最近,我遇到了一个似乎深深嵌套的单选按钮,而Capybara根本无法与之交互。
<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)'
也许我应该走另一个方向。有人有主意吗?
答案 0 :(得分:0)
您可以使用Capybara提供的#choose
方法。来自docs:
找到一个单选按钮并将其标记为已选中。单选按钮可以是 通过姓名,身份证或标签文本找到。
所以在你的实例中:
page.choose('radio1')
答案 1 :(得分:0)
你试过这个吗?
first(:css, 'radio1').click