Cucumber / Capybara:检查页面没有内容?

时间:2012-08-16 02:54:57

标签: ruby-on-rails cucumber capybara

使用Cucumber和Capybara,有没有办法验证页面上是否存在字符串?

例如,我将如何编写与此步骤相反的内容:

Then /^I should see "(.*?)"$/ do |arg1|
  page.should have_content(arg1)
end

如果存在arg1,则会通过此操作。

如果找到arg1,我将如何编写失败的步骤?

5 个答案:

答案 0 :(得分:28)

http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Matchers#has_no_text%3F-instance_method

Capybara有一个has_no_content匹配器。所以你可以写

  Then /^I should not see "(.*?)"$/ do |arg1|
    page.should have_no_content(arg1)
  end

答案 1 :(得分:12)

在目前(2016年)的Rspec 3.4中,这是测试没有内容的推荐方法:

expect(page).not_to have_content(arg1)

答案 2 :(得分:8)

如果您希望它读得更好,您也可以使用 should_not

Then /^I should not see "(.*?)"$/ do |arg1|
  page.should_not have_content(arg1)
end

更多信息:https://www.relishapp.com/rspec/rspec-expectations/docs

答案 3 :(得分:4)

目前,您可以使用:

Then /^I not see "(.*?)"$/ do |arg1|
  expect(page).to have_no_content(arg1)
end

如果在页面中找到了内容,则表示测试为红色

答案 4 :(得分:-3)

哦,等等,我明白了。这有效:

Then /^I should see "(.*?)"$/ do |arg1|
  page.has_content?(arg1) == false
end