Watir-WebDriver Cheat Sheet

Browser

# start new driver session
b = Watir::Browser.new :firefox
b = Watir::Browser.new :chrome
b = Watir::Browser.new :ie
 
# goto url
b.goto "http://relevantcodes.com"
 
# refresh
b.refresh
 
# close
b.quit

Textbox

# enter value
b.text_field(:id => "text").set "watir-webdriver"
 
# get value
b.text_field(:id => "text").value
 
# clear
b.text_field(:id => "text").clear

Button

# is enabled?
b.button(:id => "btn").enabled?
 
# button's text
b.button(:id => "btn").text
 
# click
b.button(:id => "btn").click

Checkbox

# check
b.checkbox(:id => "btn").set
b.checkbox(:id => "btn").set(true)
 
# uncheck
b.checkbox(:id => "btn").clear
b.checkbox(:id => "btn").set(false)
 
# is checked?
b.checkbox(:id => "btn").set?

Listbox

# select from list text
b.select_list(:id => "list").select "var"
 
# select using value
b.select_list(:id => "list").select_value "var2"
 
# value is selected?
b.select_list(:id => "list").selected?("var2")
 
# get value
puts b.select_list(:id => "list").value
 
# get all items
b.select_list(:id => "list").options.each do |i|
  puts "#{i.text}"
end

Radio

# select value
b.radio(:id => "radio").set
 
# is var selected?
b.radio(:id => "radio").set?

Image

# is image loaded?
b.image(:src => "img.gif").loaded?
 
# height
b.image(:src => "img.gif").height
 
# width
b.image(:src => "img.gif").width
 
# click
b.image(:src => "img.gif").click
# click 1st image
b.images[0].click

Div

# get text
b.div(:class => "body").text
 
# get text of 2nd div when it appears
b.divs[1].when_present.text

Table

# row 1, col 1
b.table(:id => "table")[0][0].text
# row 1, col 2 (alternate)
b.table(:id => "table").tr{0}.cell{1}.text
 
# row 2 - entire text
puts b.table(:id => "table")[1].text
 
# click row #4
puts b.table(:id => "table")[3].click
 
# get column count
b.table(:id => "table").row.cells.length
 
# row count
b.table(:id => "table").row_count
b.table(:id => "table").rows.length

General

# [exists?]
b.text_field(:id => "text").exists?
 
# [enabled?]
b.select_list(:id => "list").enabled?
 
# [present?]
b.element(:id => "e").present?
 
# [tag_name]
b.element(:id => "e").tag_name
 
# [screenshot]
b.screenshot.save "c:\\page.png"
 
# [to_subtype] # returns button
b.element(:id => "btn").to_subtype 
 
# [index] click 2nd image on page
b.image(:index => 1).click
 
# [loops]
# get names of all text-fields
b.text_fields.each do |i|
  puts i.name
end
 
# get name of first text-field
puts b.text_fields[0].name
# get name of second text-field
puts b.text_fields[1].name

Waiting

# [wait_until_present]
b.button(:id => "btn").when_until_present
 
# [when_present]
b.button(:id => "btn").when_present.click
b.button(:id => "btn").when_present(10).click
 
# [wait_while_present]
b.button(:value => "submit").click
b.button(:value => "submit").wait_while_present
 
# [implicit wait] 5 seconds
# good to have, but i don't recommend its global use
b.driver.manage.timeouts.implicit_wait = 5
Subscribe for Relevant Codes newsletter to get awesome updates and articles delivered straight to your inbox.

Leave a Comment

{ 9 comments… add one }

  • chan June 18, 2014, 12:24 am

    Really good and simple summary of watir.

    Reply
  • Robert November 20, 2013, 1:50 pm

    Looks promising. Need to see how many different browsers it can support. We have a need for some cross browser testing and it would be nice to not have to write several versions of the same script. Also, how well does it work against XAML?

    Reply
  • Me October 16, 2013, 12:03 am

    b.button(:id => “btn”).when_until_present

    should be

    b.button(:id => “btn”).wait_until_present

    Reply
  • Sameswar August 12, 2013, 8:38 am

    Hi Anshoo,
    Great job And its awesome stuff.
    Can i get this API?

    Thanks,
    Sameswar

    Reply
  • Shreejit August 4, 2013, 11:40 am

    Wowwww awesome stuff
    Anshoo, how easy is it to pick up and float with ruby??? (for heavy qtp background :))

    Reply
    • Anshoo Arora August 10, 2013, 4:04 am

      Shreejit, Ruby is quite easy to learn and isn’t any much more complex than VBScript. Its a much better and a lot more powerful language though.

  • Vinoth July 26, 2013, 10:33 pm

    Looks awesome Anshoo…Thanks for sharing
    I want to learn Ruby ASAP for this…

    Reply
    • Anshoo Arora August 10, 2013, 4:04 am

      Vinoth/Shreejit, when you install Ruby, you will see in the installation folder “The Book of Ruby” – a great read.