【问题标题】:Capybara selectors matched but not to all filter, what does this mean?Capybara 选择器匹配但不是所有过滤器,这是什么意思?
【发布时间】:2014-07-30 13:02:27
【问题描述】:

在 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: attrvalue 1 attrkulcs2: attrvalue 2 attrkulcs3: attrvalue 3 attrkulcs4: attrvalue 4", "box_2003", "box_1001", "box_1002 attrkulcs1: attrvalue 1 attrkulcs2: attrvalue 2 attrkulcs3: attrvalue 3", "attrkulcs3: attrvalue 3"1 1"。还找到了匹配选择器但不是所有过滤器的“”、“”、“”。 (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 效果很好。

【问题讨论】:

    标签: ruby-on-rails selenium css-selectors cucumber capybara


    【解决方案1】:

    '匹配选择器但不是所有过滤器'的意思是:

    • 匹配选择器:一个“div”
    • 不匹配过滤器:@class='box'

    所以看起来你总是有 9 个 div,但其中一些没有被预期的 .box 类识别。

    如果您手动查看原始 html 会发生什么(所有 9 个 div 是否总是附加正确的 .box 类)?

    更新:

    我对选择器和过滤器的假设可能不正确。整个块 "//div[@class='box']" 是选择器,可选过滤器是 text: 'foo' 等。

    另外,我将您的 html 粘贴到一个项目中并将其更新到 capybara(2.2.1) 并且您的所有测试都通过了:

    ```

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

    ```

    所以,我无法重现问题...

    【讨论】:

    【解决方案2】:

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

    “您实际上是在使用过滤器计数和可见(默认为 true)而没有相关的 css,这无法确定,但是三组空引号往往表明 .box 元素中的 3 个实际上并不是在页面上可见”

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-05
      • 1970-01-01
      • 1970-01-01
      • 2010-11-11
      相关资源
      最近更新 更多