2013-04-12 15 views
20

Come posso controllare il contenuto html sulla pagina con capybara?Capibara: dovrebbe avere un contenuto HTML

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

uscita:

 
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

possibile duplicato di [Come ottengo l'HTML in un elemento utilizzando Capybara?] (Http://stackoverflow.com/questions/4071937/how-do-i-get-the-html-in-an-element -using-capybara) –

risposta

28

Il codice non funziona come di Capybara has_text? (e quindi have_text) metodo di controlli testo, non sorgente html dell'elemento viene invocato su.

Se si utilizza driver che supporta la valutazione Javascript (ad esempio selenio, Poltergeist o Capybara-Webkit) è possibile ottenere HTML interna dell'elemento utilizzando Javascript:

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

Se si vuole affermare che l'intero codice HTML di la pagina contiene un elemento è possibile utilizzare html metodo che restituisce sorgente della pagina:

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

di solito preferisco valutazione javascript in quanto è più restrittiva.

+0

Ho provato un numero di elementi validi fino a includere 'id',' div # id' e 'body'. In ogni caso, ottengo questo rifiuto 'errore sconosciuto: Impossibile leggere la proprietà innerHTML di null' – TangibleDream

Problemi correlati