如何获得逐字 href 属性

How can I get verbatim href attribute

我在 html 页面中有一个页面内部 link:

<div class="bar">
  <a href="#foo">Go to foo</a>
</div>

我使用 Capybara 匹配器选择了这个锚元素。当我尝试访问 href 属性时,该值扩展为完整 URL:

find(".bar a")[:href] # => "http://path/to/page#foo"

如何只获取内部 link,即逐字 href 值?

find(".bar a")... # => "#foo"

Capybara returns 支持 JS 的驱动程序中的 属性 href(相对于属性),这是规范化的。要访问属性值,您需要使用 evaluate_script

link = find(".bar a")
evaluate_script("arguments[0].getAttribute('href')", link)

另一方面,如果您只想验证 link 是否具有特定的 href 属性,您可以使用 :link 选择器

expect(page).to have_link('Go to foo', href: '#foo')

或者通过 href 属性找到 link

link = find(:link, href: '#foo')

等...