2013-04-12 9 views
20

capybaraでページのhtmlコンテンツをチェックする方法は?Capybara:htmlコンテンツが必要です

page.should have_text('this is <b>bold</b> "text"') 

出力:

 
Failure/Error: page.should have_text('this is <b>bold</b> "text"') 
    expected there to be this is <b>bold</b> \"text\" in "....this is bold \"text\"....." 
+0

[Capybaraを使用して要素内のHTMLを取得するにはどうすればよいですか?](http://stackoverflow.com/questions/4071937/how-do-i-get-the-html-in-an-element -using-capybara) –

答えて

28

あなたのコードでは、カピバラさんhas_text?(ひいてはhave_text)メソッドをチェックし、テキストではなく、それが上の呼び出された要素のHTMLソースとして動作しません。

あなたはJavascriptを評価(例えばセレン、ポルターガイストやカピバラ-のWebkit)をサポートするドライバを使用する場合はJavascriptを使用して要素の内部HTMLを取得することができます:あなたは全体のHTMLと主張したい場合は

html = page.evaluate_script("document.getElementById('answer-15988092').innerHTML") 
html.should include('this is <b>bold</b> "text"') 

をそれは、より限定的だとして

page.html.should include('this is <b>bold</b> "text"') 

通常、私はjavascriptの評価を好む:ページでは、ページのソースを返すhtml方法を使用することができる要素が含まれています。

+0

私は、 'id'、' div#id'、および 'body'を含むいくつかの有効な要素を試しました。いずれの場合も、私はこの拒絶を受け取りました。「不明なエラー:プロパティinnerHTMLを読み込めません」 – TangibleDream

関連する問題