B Seven
B Seven

Reputation: 45943

How to extract HTML from updated DOM using Capybara Webkit driver?

I have a page that injects some text into the DOM: 'Success!'.

The Javascript code works because I see the expected text in the screenshot, and the spec passes:

page.visit '/'

save_and_open_screenshot

expect( page).to have_content 'Success!'

puts page.html

However, the page.html is not updated. It does not have the injected text.

How do I get the HTML for the updated DOM?

EDIT: I found that the issue is caused by an iframe. The iframe is not added to the page.html, but it is added to the page.

EDIT #2: It turns out that the 'Success!' content is not in the iframe. So maybe the context is switching to the iframe.

Upvotes: 0

Views: 1174

Answers (2)

Peter P.
Peter P.

Reputation: 3507

For the entire page body you can do this:

page.body

For any element in particular

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

Check out the full API here: https://github.com/thoughtbot/capybara-webkit/blob/master/lib/capybara/webkit/node.rb

Upvotes: 1

B Seven
B Seven

Reputation: 45943

Found one workaround which is OK:

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

I guess one could use JS or jQuery finder to find the expected <div>.

Upvotes: 1

Related Questions