1

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

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

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

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

怎样才能只得到内部链接,即逐字href值?

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

1 回答 1

2

Capybarahref在支持 JS 的驱动程序中返回属性(而不是属性),这是规范化的。要访问属性值,您需要使用 evaluate_script

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

另一方面,如果您只想验证链接是否具有特定的 href 属性,您可以使用 :link 选择器来执行此操作

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

或通过 href 属性查找链接

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

ETC...

于 2017-05-10T16:22:32.757 回答