ruby-on-rails - Capybara 选择器匹配但不是所有过滤器,这是什么意思?

原文 标签 ruby-on-rails selenium css-selectors cucumber capybara

在运行 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/

相关文章:

javascript - 如何处理“已弃用 promise 拒绝”

javascript - 如何设置浏览器视口(viewport)大小

css - CSS中element.classname和element .classname选择器之间的区别?

css - 我可以将:nth-​​child()或:nth-​​of-type()与任意选择器结合使用吗?

ruby-on-rails - 如何避免意外从模型发送敏感字段?

ruby-on-rails - 在字符串 rails 中提取数组

node.js - 从文件Selenium node.js添加解压缩的扩展

html - 性能权衡 - CSS 效率、CSS 文件大小、HTML 文件大小

ruby-on-rails - 在 rails 中使用 simple-form 时可以更改标签显示名称吗?

ruby-on-rails - Ruby/Rails:#inspect之后解码HTML