Подтвердить что ты не робот

Capybara: должен иметь html-контент

Как я могу проверить содержимое html на странице с помощью capybara?

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\"....."
4b9b3361

Ответ 1

Ваш код не работает, так как метод Capybara has_text? (и таким образом have_text) проверяет текст, а не html-источник элемента, на который он вызывается.

Если вы используете драйвер, который поддерживает оценку Javascript (например, Selenium, Poltergeist или Capybara-Webkit), вы можете получить внутренний HTML-код элемента с помощью Javascript:

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

Если вы хотите утверждать, что весь HTML-код страницы содержит элемент, вы можете использовать метод html, который возвращает источник страницы:

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

Обычно я предпочитаю оценку javascript как более ограничительную.