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/

相关文章:

ruby-on-rails - 安装ActiveAdmin gem并运行 “rails db:seed”和 “rails g active_admin:install”后运行 “rails db:migrate”时出错

ruby-on-rails - Rails asset_host、cloudfront 和 heroku

ruby-on-rails - 如何在 Rails 3 中创建原子提要?

Python 和 Selenium 查找名称不准确的元素

Selenium 网络驱动程序 : Open new tab instead of a new window

html - 当存在多个具有相同属性和文本的元素时,如何识别 Xpath?

html - 选择具有行跨度的表的第一列

ruby-on-rails - Rails 入门 5.7

javascript - 有没有办法使用查询选择器选择具有一些文本数据的第一个 p 标签

css - 如何在 CSS 中选择具有特定类名的 "last child"?