2013-04-12 17 views
20

Sayfada html içeriğini capybara ile nasıl kontrol edebilirim?Capybara: html içeriğiniz olmalı

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

çıkışı:

Kodunuz Capybara en has_text? (ve dolayısıyla have_text) yöntemi denetler metin, o çağrılır elemanın değil html kaynağı olarak çalışmaz
 
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

olası yinelemesi [HTML'yi Capybara kullanarak bir öğeye nasıl alabilirim?] (Http://stackoverflow.com/questions/4071937/how-do-i-get-the-html-in-an-element -using-capybara) –

cevap

28

.

Eğer (örneğin Selenyum, Poltergeist veya Capybara-Webkit) kullanarak elemanın iç HTML alabilirsiniz Javascript JavaScript değerlendirmeyi destekleyen sürücüyü kullanıyorsanız: Eğer tüm HTML iddia istiyorsanız

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

daha kısıtlayıcı olduğu gibi

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

Genellikle javascript değerlendirmeyi tercih: sayfa unsuru sayfa kaynağını döndüren html yöntemi kullanabilirsiniz içerir.

+0

"id", "div # id" ve "body" dahil olmak üzere bir dizi geçerli öğe denedim. Her durumda, bu reddetme bilinmeyen bir hatayı alıyorum: null'ın property innerHTML'si okunamıyor – TangibleDream