我想在某些情况下检查给定字符串是否多次出现
我在其他地方找到了这个:
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,得到假
我还尝试了上述正则表达式的多行变体。
答案 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