如何在我的Cucumber/Capybara步骤定义中进行xpath正则表达式搜索(Rails 3)?

9

我有一个场景需要验证我刚上传的图片是否存在于下一页。

以下工作得很好,但是我的文件夹结构基于listing_id变量。如何在这里使用正则表达式将image与仅文件名匹配,而不是整个URL?

Then /^I should see the image "(.+)"$/ do |image|
    page.should have_xpath("//img[@src=\"/public/images/#{image}\"]")
end
2个回答

15

尝试使用page.should have_xpath("//img[contains(@src, \"#{image}\")]"),它将匹配任何src包含文件名的img


我建议使用 ends-with 函数。 - alpha-mouse
@Jamis:我本意是使用 ends-with XPath 函数而不是 contains。我对 Ruby 一无所知,但复制粘贴 @dmarkow 的代码将会得到 page.should have_xpath("//img[ends-with(@src, \"#{image}\")]") - alpha-mouse

0

如果您有选择的话,使用 CSS 选择器在这种情况下更为简洁:

page.should have_selector( :css, "a[href$='#{image}']")

请注意在 'href$' 结尾的 '$',表示匹配字符串的末尾。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接