在运行 capybara 选择器之前,我使用 save_and_open_page 命令保存了以下 html(我还检查了 page.body,它是一样的):https://gist.github.com/davidkovaccs/8991af5bed1805277f52
我收到以下错误消息:'expected to find xpath "//div[@class='box']"9 次,找到 6 个匹配项:"box_2001 attrkulcs1: attrvalue 1 attrkulcs2: attrvalue 2 attrkulcs3: attrvalue 3", "box_2002 attrkulcs1:属性值 1 attrkulcs2:属性值 2 attrkulcs3:属性值 3 attrkulcs4:属性值 4”、“box_2003”、“box_1001”、“box_1002 attrkulcs1:属性值 1 attrkulcs2:attrkulcs2:attrkulcs3:attrkulcs3:attrkulcs3:attrkulcs3:attrkulcs3 attrkulcs4:属性值 4”、“box_2003”、“box_1001”、“box_1002 attrkulcs2”还找到了 ""、""、"",它们与选择器匹配,但不是所有过滤器。 ( 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 的答案:
“您实际上正在使用过滤器计数和可见(默认为 true)而没有相关的 css 无法确定,但是三组空引号往往表明 .box 元素中的 3 个实际上在页”
确实这就是问题所在,我不得不在我的选择器中添加一个“visible: false”参数来搜索屏幕中看不到的元素。
关于ruby-on-rails - Capybara 选择器匹配但不是所有过滤器,这是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24129596/