如何使用Capybara Webkit驱动程序从更新的DOM中提取HTML?

时间:2015-04-15 21:18:14

标签: ruby rspec capybara capybara-webkit

我有一个向DOM注入一些文本的页面:'Success!'

Javascript代码有效,因为我在屏幕截图中看到了预期的文字,并且规范通过了:

page.visit '/'

save_and_open_screenshot

expect( page).to have_content 'Success!'

puts page.html

但是,page.html未更新。它没有注入的文本。

如何获取更新的DOM的HTML?

编辑:我发现问题是由iframe引起的。 iframe未添加到page.html,但已添加到页面中。

编辑#2:事实证明,“成功!'内容不在iframe中。所以上下文可能会切换到iframe。

2 个答案:

答案 0 :(得分:1)

找到一个可行的解决方法:

html = page.evaluate_script( 'document.documentElement.innerHTML' )

我想可以使用JS或jQuery finder找到预期的<div>

答案 1 :(得分:1)

对于整个页面正文,您可以这样做:

page.body

特别是任何元素

page.find(".my-div").base.inner_html

在此处查看完整的API:https://github.com/thoughtbot/capybara-webkit/blob/master/lib/capybara/webkit/node.rb