我在具有多个复选框字段和“其他”选项的表单上使用 Capybara。Capybara API 为我们提供
page.check('Other')
但没有办法(我能找到)将范围限制为给定的字段。您可以基于 CSS(或 XPath)选择器限制范围,但由于不存在有意义的选择器,因此我需要更改页面的(丑陋的旧版)标记以适应 Capybara,这似乎是错误的解决方案。(在一个完美的世界里,我有时间完全重构标记,最后得到一些语义上合理的东西,这也给了我为 Capybara 选择范围的方法,但这不是一个完美的世界,我不想要只是为了适应水豚而在所有的地方上课。)
这个
page.within('[name=FieldName]') do
page.check('Other')
end
也不起作用,因为 Capybara 正在寻找一个可以用作范围的父节点,这提供了一组复选框。(如果 Capybara 支持它会很好,但它不支持。)这就像我正在传递一副卡片进行搜索,Capybara 想要卡片进入的盒子,但我没有任何盒子。
我希望能够做这样的事情
page.check('Other', :in => 'FieldName')
但我无论如何都找不到这样做。据我所知,唯一可以传入的选项是text
,visible
和exact
. 我错过了什么吗?有没有办法在不采用丑陋的解决方法的情况下做到这一点?