learn selenium webdriver

Watir-WebDriver Cheat Sheet

Watir 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

Watir 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

Watir Button

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

Watir 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?

Watir 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

Watir Radio

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

Watir 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

Watir Div

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

Watir 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

Watir 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

Watir 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

Leave a Comment

Scroll to Top