8
votes

I have looked through the examples on these pages

http://watir.com/examples/ http://wiki.openqa.org/display/WTR/Examples

I still don't see a simple example of getting html of a page.

browser = Watir::Browser.new
browser.goto 'mysite.com'

I have tried

puts browser.text

It seems not working.

Thanks

4
I am curious as to why you might need the entire html for the page. I ask because a lot of times this is an indication that someone has an rather round-about idea in their head about how to address some testing challenge, and if we know more about what you are trying to do, we might be able to show you an easier more direct way such as getting a smaller portion of the HTML for the thing you are interested in, or learning to use the developer tools for your favorite browser.Chuck van der Linden
I 'd like to use nokogiri to parse the html :)icn
ok cool, so lets 'pop the why stack' one more time. Why do you want to parse the html with nokogiri?Chuck van der Linden
I'll grant that, but it doesn't answer the question, so lets pop the why stack one more time. Why do you want to parse the html?Chuck van der Linden
how will you find them (identify them) and what are you going to do with them once found? (although if the idea was to really identify the 'business value' of what you were doing I'd ask why are you interested in those items ;-) )Chuck van der Linden

4 Answers

23
votes

This should do it:

puts browser.html
2
votes
puts browser.html

Will return all of the html, in case you only want to print the active objects, you can use:

puts browser.show_active

Similarly if you only want the links to be printed, you can use:

puts browser.show_links
1
votes

IE8, Ruby 1.9.3, Watir 3.0, WindowsXP

I need to grab the text in a cell with id="numberCovered".

<table cellpadding="0" cellspacing="0"  class="thisThemeBodyColor"><tr style="height:22px;"><td id="numberCoveredlabel" style="cursor:default;" class="smallHeadingBlack" width="200">Number of individuals to be covered</td><td id="numberCovered" class="smallHeadingBlack" style="font-weight:bold;">1</td><input type="hidden" name="numberCovered" tooltip="" value="1" onpropertychange="variableAsTextChanged(this);"/></tr><tr><td id="numberSpouseslabel" style="cursor:default;" class="smallHeadingBlack" width="200">Number of spouses to be covered</td><td id="numberSpouses" class="smallHeadingBlack" style="font-weight:bold;">0</td><input type="hidden" name="numberSpouses" tooltip="" value="0" onpropertychange="variableAsTextChanged(this);"/></tr></table>

As @icn mentioned, a raw page source dump is sometimes nice to have as a fallback when you can't find an appropriate Watir builtin method.

--Update-- The above mentioned $browser.html was spewing empty lines, but this seeems to be working:

require 'nokogiri'
page_html = Nokogiri::HTML.parse($browser.html)
entry = page_html.css('td[id=numberCovered]')
0
votes

puts browser.html will return all the objects on the page. If you want only the active objects then you can use puts browser.show_active similarly if you want only the links to be displayed you can use puts browser.show_links which will show all the links on the page.