【问题标题】:Cucumber/Capybara Test Failing "expected to find css ".singer-row" but there were no matches"Cucumber/Capybara 测试失败“预计会找到 css”.singer-row”,但没有匹配项”
【发布时间】:2015-08-29 04:12:53
【问题描述】:

我的一项黄瓜 CapyBara/Cucumber 测试一直失败,我不知道为什么。这是测试:

Then /^I should see that the customer is a singer$/ do
  expect(page).to have_css('.singer-row')
end

如果我窥探该测试并运行“expect(page).to have_css('.singer-row')”,它会返回 true。在浏览器中,我可以看到该元素。

这是错误:

expected to find css ".singer-row" but there were no matches (RSpec::Expectations::ExpectationNotMetError)

这是erb:

 <% @singers.each do |singer| %>
          <tr class='singer-row'>
             <td>
...

我哪里错了?

【问题讨论】:

    标签: ruby-on-rails cucumber capybara shopify


    【解决方案1】:

    终于找到了。不得不添加

    Capybara.default_max_wait_time = 5
    

    到我的环境文件。 Capybara 在加载之前正在寻找 css 元素。

    【讨论】:

    • 顺便说一句,如果您只需要更长的延迟来满足您的期望,您可以使用 have_css(('.singer_row', wait: 5)。如果对于特定的测试/场景,您可以将其包装在 using_wait_time (5) { .... }
    【解决方案2】:

    问题可能与运行测试用例时的页面大小有关。有时内部浏览器会以非常小的尺寸打开,因此它会在后台获取移动视图。

    因此,请尝试在您遇到错误的测试用例中截取您的页面。

    如果是这种情况,请尝试添加以下代码并完成。

    Before do |scenario|
      DatabaseCleaner.start
      page.driver.browser.manage.window.maximize
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-12
      • 1970-01-01
      相关资源
      最近更新 更多