黄瓜 +水豚检查多次出现的文本

发布于 2024-11-19 06:18:28 字数 605 浏览 3 评论 0原文

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

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

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,得到 false

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

I want to check if a given string appears multiple times in some scenarios

I found this elsewhere:

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

Which was written for webrat. I'm trying to express it with 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

Which gives me expected #has_xpath("//*") to return true, got false

I also tried a multiline variant of the above regexp.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

妥活 2024-11-26 06:18:28

我在弄乱了正则表达式后最终使用了解决方案。我认为“([^/])”会将某些内容作为正则表达式,而不是“([^”])”将某些内容作为纯文本:

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

The solution I ended up using after messing with the regexp. I gather that "([^/])" will takes something as a regular expression versus "([^"])" taking something as plaintext:

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文