【问题标题】:How do I match a full link in capybara?如何匹配水豚中的完整链接?
【发布时间】:2011-12-24 19:14:08
【问题描述】:

在 Capybara+Rspec 中,我可以检查是否缺少链接:

response.body.should_not have_link("link_content")

这很好,但不幸的是,当“link_content”部分匹配链接时,测试失败,例如“this_is_a_long_link_content”。在这种情况下如何更改测试以使其通过?

(即匹配器不应该部分匹配,而应该完全匹配)。

【问题讨论】:

    标签: ruby rspec capybara


    【解决方案1】:

    您还可以使用以下解决方法:

    response.body.should_not have_xpath("//a[normalize-space(text())='link_content']")
    

    这是与空白无关的,因此比原始 HTML 方法更灵活。

    【讨论】:

    • 不知道 xpath 可以如此强大,很高兴知道这一点(这意味着您的答案值得被赞成;))。但是,原始 HTML 方法也可以很容易地与空格无关 - 请参阅我编辑的答案。
    【解决方案2】:

    来自文档:

    如果一切都失败了,您还可以使用 page.html 方法来测试原始 HTML:

    这对我有用:

    page.html.should match('>\s*Log in\s*</a>')
    page.html.should_not match('>\s*link_content\s*</a>')
    

    请注意,要匹配的参数可以是正则表达式。这意味着您可以通过简单地添加 \s* 来使解决方案与空白无关。

    【讨论】:

    • 我没有去尝试,因为 Niklas 的回答效果很好,但这是一个很好的后备方案,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多