【问题标题】:Capybara: should have html contentCapybara:应该有html内容
【发布时间】:2013-04-12 22:24:26
【问题描述】:

如何使用 capybara 检查页面上的 html 内容?

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

输出:

失败/错误:page.should have_text('this is bold "text"') 预计会有 this is bold \"text\" in "....this is bold \"text\"....."

【问题讨论】:

标签: rspec capybara


【解决方案1】:

您的代码不起作用,因为 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 评估,因为它更具限制性。

【讨论】:

  • 我已经尝试了许多有效元素,包括iddiv#idbody。在每种情况下,我都会收到此拒绝 unknown error: Cannot read property innerHTML of null
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多