Skip to content

Instantly share code, notes, and snippets.

@jarib
Created October 6, 2010 17:05
Show Gist options
  • Save jarib/613695 to your computer and use it in GitHub Desktop.
Save jarib/613695 to your computer and use it in GitHub Desktop.
s-wd page objects
require "rubygems"
require "selenium-webdriver"
class DriverContainer
def initialize(driver)
@driver = driver
end
end
#
# site object - returns pages
#
class Google < DriverContainer
def open
@driver.goto "http://google.com"
end
def front_page
FrontPage.new(@driver)
end
def result_page
ResultPage.new(@driver)
end
end
#
# page object
#
class FrontPage < DriverContainer
def search_for(query)
search_field.set(query)
search_button.click
end
private
def search_field
@driver.find_element(:name => 'q')
end
def search_button
@driver.find_element(:name => "btnG")
end
end
class ResultPage < DriverContainer
def results
# ... some code to fetch results here ...
end
def loaded?
some_element
true
rescue Selenium::WebDriver::Error::NoSuchElementError
false
end
private
def some_element
@driver.find_element(:id => "some-element")
end
end
#
# actual script
#
site = Google.new(Selenium::WebDriver.for(:firefox))
site.open
site.front_page.search_for("watir-webdriver")
sleep 0.2 until site.result_page.loaded?
site.result_page.results.each do |result|
p result
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment