Capybara:应该有html内容

时间:2013-04-12 22:24:27

标签: rspec capybara

如何使用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\"....."

1 个答案:

答案 0 :(得分:29)

您的代码不起作用,因为Capybara的has_text?(因而have_text)方法检查文本,而不是调用它的元素的html源。

如果您使用支持Javascript评估的驱动程序(例如Selenium,Poltergeist或Capybara-Webkit),您可以使用Javascript获取元素的内部HTML:

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评估,因为它更具限制性。