我在 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"
我在 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"
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...