2017-05-10 4 views
1

を得ることができます。私はhref属性にアクセスしようとすると、値は完全なURLに展開されます。は、どのように私は、HTMLページにページの内部リンクを持ってそのままhref属性

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

はどのようにのみ内部リンク、すなわち、逐語的hrefの値を得ることができますか?

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

はできませんこれをcapybara 2.4.3とrspec 3.5.0で複製する。 'find(' bar a ')[:href] #=> "#foo" ' – omnikron

+0

@omnikronそれは驚くべきことです。私はcapybara 2.12.0とrspec 3.5.0を使用しています。 – sawa

+0

アンカータグを生成するためにパスヘルパーを使用しているとは思いません...?その場合のhtmlをダブルチェックする価値があります。それ以外の場合は私は困惑しています。 – omnikron

答えて

2

カピバラは、正規化され、JS可能なドライバに(属性とは対照的に)プロパティhrefを返します。リンクセレクタ

:一方で、あなただけのリンクを確認したい、場合は、

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

をevaluate_script使用する必要があります属性値へのアクセスを取得するには、特定のhrefは、あなたがそれを行うことができ、属性ということがあります

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

またはhref属性

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

などによってリンクを見つけるために...

関連する問題