I had some time to kill this morning so I decided to toss together another 
'sample'. I know when I start learning something new there is nothing better 
then working examples that I can modify and see how they break, so here you go.

This is a 'wrapper' for the Google website. I wrote it with the intention of 
show a number of different things about ruby. The goal is that you should be 
able to take the 'Google' class and quickly generate new scripts from it.

Run it, update it, modify it and have some fun :)

------------

require 'watir'
include Watir

# A wrapper for our global ie object
# contains some special logic for creating a new IE if one doesnt' exist
def browser
        if $ie == nil or !$ie.exists?
                $ie = IE.new
        else
                $ie
        end
end

# I found that the search box and the search button are the same on the home 
page
# and the results page, so I made a module to hold them both
module Generic_Search_Functions
        def search_box( search_string )
                browser.text_field(:name, 'q').set( search_string )
        end
        
        def google_search()
                browser.button(:name, 'btnG').click
        end
end

# This class handles issues dealing with the results page
class Results
        # this includes the functions in the module
        include Generic_Search_Functions
        
        # Since the buttons are named differently I wrapped it
        # this is just calling the function in the above module
        def search()
                google_search()
        end
        
        # click the next button, handle it not being there
        def next()
                element = browser.div(:id, 'nn')
                if element.exists?
                        element.click
                else
                        puts 'End of the list'
                end
        end
        
        # click the previous button, handle it not being there
        def previous()
                element = browser.div(:id, 'np')
                if element.exists?
                        element.click
                else
                        puts 'Start of the list'
                end             
        end
        
        # this just outputs the href for the search results
        # if it can't find it, it lets you know
        def search_result(index)
                element = 
browser.div(:index,'2').div(:index,'1').link(:index,index)
                
                if element.exists?
                        puts element.href
                else
                        puts 'Unable to find element'
                end
        end
end

# here is our main class, google
# it contains both the module and the results class
class Google
        # heres that module again!
        include Generic_Search_Functions
        
        # lets define our url in here
        # lets also create a results object so we have access to it
        def initialize()
                @url = 'http://www.google.com'
                @results = Results.new()
        end
        
        # ooooo, magic!
        attr_accessor :results
        
        # this navigates us to the page and checks to make sure the logo is 
there
        def go()
                browser.goto(@url)
                wait_until{ browser.image(:src, /logo.gif/).exists? }
        end

        # wrapper for the I'm feeling Lucky botton
        def im_feeling_lucky()
                browser.button(:name, 'btnI').click
        end
end

# create our new google object
google = Google.new()

# go to the website
google.go

# Input some text into the search box (this function is from the module)
google.search_box('Cats')

# click search (this is from the module also)
google.google_search()

# show us the href of the first link
google.results.search_result(1)

# next page please!
google.results.next()

# show us the href of first link on this page
google.results.search_result(1)

# lets go page, i liked those results better
google.results.previous()

# How about the second link, maybe its better
google.results.search_result(2)

# change the search!
google.results.search_box('Dogs')

# click!
google.results.search()

# maybe this is what i really wanted!
google.results.search_result(1)
_______________________________________________
Wtr-general mailing list
[EMAIL PROTECTED]
http://rubyforge.org/mailman/listinfo/wtr-general

Reply via email to