Cucumber + Capybara检查多次出现的文字

时间:2011-07-06 15:42:42

标签: cucumber capybara

我想在某些情况下检查给定字符串是否多次出现

我在其他地方找到了这个:

Then /^I should see "([^\"]*)" twice$/ do |text|
  regexp = Regexp.new(text + "(.+)" + text)
  response.body.should contain(regexp)
end

这是为webrat而写的。我试图用Capybara表达它:

Then /^I should see "([^"]*)" twice$/ do |text|
  regexp = Regexp.new(text + "(.+)" + text)
  if page.respond_to? :should
    page.should have_xpath('//*', :text => regexp)
  else
    assert page.has_xpath?('//*', :text => regexp)
  end
end

这让我期望#has_xpath(“// *”)返回true,得到假

我还尝试了上述正则表达式的多行变体。

1 个答案:

答案 0 :(得分:3)

我在搞乱正则表达式后最终使用的解决方案。我认为“([^ /] )”会将某些内容作为正则表达式而不是“([^”] )“将某些东西视为明文:

Then /^I should see "([^\/]*)" "(.+)" times$/ do |regexp, times|
  str = regexp
  for i in times
    str = str + "(.+)" + regexp
  end
  regexp = Regexp.new(str)
  if page.respond_to? :should
    page.should have_xpath('//*', :text => regexp)
  else
    assert page.has_xpath?('//*', :text => regexp)
  end
end