我正在编写测试以检查元标记是否存在以及内容是否匹配。请看下面的例子:
def have_meta(name, expected)
page.find "meta[property='#{name}'][content='#{expected}']", :visible => false
end
我正在调用以下函数:
have_meta("og:title", "this is the title")
have_meta("og:url", "http://www.lorem.com/ipsum")
问题是我的网址内容会根据我工作的环境而变化。它可以是:
http://www.lorem.com/ipsum
或
http://www.sdfsd.com/ipsum
我希望与"内容"进行正则表达式匹配。 Meta的一部分。忽略主网址,但检查" ipsum"部分。你知道我怎么能这样做吗?
答案 0 :(得分:2)
我会使用CSS的结尾 - 使用属性选择器:
def have_meta_with_path(name, path)
page.find "meta[property='#{name}'][content$='#{path}']", :visible => false
end
其中path
只是例如' / ipsum的&#39 ;.不需要正则表达式。最安全的方法是使用两种方法:测试整个值的原始have_meta
和测试结束的上述方法。您不想只测试og:title
的结尾。
答案 1 :(得分:0)
您可以使用XPath而不是CSS。
page.should have_xpath "//meta[@property='og:url'][contains(@content, 'ipsum')]"