有没有办法告诉Capybara在搜索页面时忽略div。
像
这样的东西page.assert_no_selector('a', :unless => '.an-excused-class a')
或者,在特定步骤中是否有一种方法可以告诉Capybara不计算隐藏的元素。我已经看到了一些全球性的方法,但这不是我想要的。
TIA
答案 0 :(得分:0)
Capybaras默认断言无法告诉它忽略与选择器匹配的某些元素。
默认情况下,Capybara无法找到隐藏的元素,如果您通过更改Capybara.ignore_hidden_elements选项覆盖了它,则可以在断言中指定:visible选项
page.assert_no_selector(' a',visible:true)
可见选项可以采用多个值:
答案 1 :(得分:0)
如果有两个div是相同的,但有一个是隐藏的,那么capybara会自动只查找可见的div。
但是,如果使用选项
选项在capybara的全局设置中具有相反的值:visible
即
page.should have_css("ol li", :visible => true)
将强制它仅检查可见的div。
但是,如果使用可见性选项是完全没有,那么可能还有其他方法来判断它是否存在。
使用count方法可以告诉您页面上是否有正确的命名div数:
page.should have_css("ol li", :count => 2)
或者如果你知道div总是如此,那就说第三个:
page.all("ol li")[3]
最后,如果这些div被包含在不同标记的HTML单独的块中 - 您可以在HTML中查找以通过与capybara链接来查找它们:
page.find('#foo').find('.bar')
此信息的良好来源:
http://www.rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Finders#find-instance_method