我在运行capybara选择器之前已使用save_and_open_page命令保存了以下html(我也检查过page.body,它是相同的):https://gist.github.com/davidkovaccs/8991af5bed1805277f52

我收到以下错误消息:'预期找到xpath“//div [@ class ='box']”“9次,找到6个匹配项:” box_2001 attrkulcs1:attrvalue 1 attrkulcs2:attrvalue 2 attrkulcs3:attrvalue 3“,” box_2002 attrkulcs1:attrvalue 1 attrkulcs2:attrvalue 2 attrkulcs3:attrvalue 3 attrkulcs4:attrvalue 4”,“box_2003”,“box_1001”,“box_1002 attrkulcs1:attrvalue 1 attrkulcs2:attrvalue 2 attrkulcs3:attrvalue1” attrkulcs3:attrvalue1。还找到了“”,“”,“”,它们与选择器匹配,但并非所有过滤器都匹配。 ( capybara :: ExpectationNotMet)'

请注意,对于每个测试运行,找到的6个匹配项都不是6。它是4到9之间的数字。
我真的不明白什么是“匹配选择器,但不是所有过滤器”语句。据我所知,我没有使用任何过滤器。

我尝试了以下选择器,但所有选择器都给出了相同的错误消息:

have_xpath("//div[@class='box']", :count => 9)
have_selector(:css, '.box', :count => 9)
have_css('.box', :count => 9)

我也尝试过 capybara 2.2.1和2.3.0。我正在使用Selenium Webdriver 2.42.0

从浏览器控制台运行$ x(“//div [@ class ='box']”)。length效果很好。

最佳答案

我正在从github(https://github.com/jnicklas/capybara/issues/1326)复制twalpole的答案:

“您实际上是在不使用相关CSS的情况下实际上使用了过滤器计数和可见(默认为true),因此无法肯定地说,但是三组空引号往往表示3个.box元素实际上在页面上不可见页”

确实,这就是问题所在,我必须在选择器中添加一个“visible:false”参数,以搜索屏幕上看不到的元素。

10-03 01:00