Pregunta Capibara: debería tener contenido html


¿Cómo puedo verificar el contenido html en la página con capibara?

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

salida:

Fallo / Error: page.should have_text ('this is <b> bold </ b> "text"')
  se espera que esto sea <b> bold </ b> \ "text \" en ".... esto es negrita \" text \ "....."

20
2018-04-12 22:24


origen


Respuestas:


Tu código no funciona como el de Capibara has_text? (y por lo tanto have_text) el método verifica el texto, no la fuente html del elemento sobre el que se invoca.

Si usa un controlador que admite la evaluación de Javascript (por ejemplo, Selenium, Poltergeist o Capybara-Webkit), puede obtener el HTML interno del elemento utilizando Javascript:

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

Si desea afirmar que todo el HTML de la página contiene un elemento que puede usar html método que devuelve el origen de la página:

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

Por lo general, prefiero la evaluación de JavaScript, ya que es más restrictiva.


29
2018-04-13 21:28