最近,我遇到了一个单选按钮,它似乎嵌套得很深,以至于 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)' 中收到错误
也许我应该换个方向。有人有什么想法吗?
最佳答案
你可以使用 capybara 提供的#choose
方法。来自docs :
Find a radio button and mark it as checked. The radio button can be found via name, id or label text.
所以在你的例子中:
page.choose('radio1')
关于html - 与 Capybara 中深度嵌套的单选按钮交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26768814/