Module: Watir::Browser

Defined in:
lib/watir-classic/browser.rb

Overview

Watir is a family of open-source drivers for automating web browsers. You can use it to write tests that are easy to read and maintain.

Watir drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on a page.

The Watir family currently includes support for Internet Explorer (on Windows), Firefox (on Windows, Mac and Linux) and Safari (on Mac).

Project Homepage: wtr.rubyforge.org

This Browser module provides a generic interface that tests can use to access any browser. The actual browser (and thus the actual Watir driver) is determined at runtime based on configuration settings.

require 'watir-classic'
browser = Watir::Browser.new
browser.goto 'http://google.com'
browser.text_field(:name, 'q').set 'pickaxe'  
browser.button(:name, 'btnG').click
if browser.text.include? 'Programming Ruby'
  puts 'Text was found'
else
  puts 'Text was not found'
end

A comprehensive summary of the Watir API can be found here wiki.openqa.org/display/WTR/Methods+supported+by+Element

There are two ways to configure the browser that will be used by your tests.

One is to set the watir_browser environment variable to ie or firefox. (How you do this depends on your platform.)

The other is to create a file that looks like this.

browser: ie

And then to add this line to your script, after the require statement and before you invoke Browser.new.

Watir.options_file = 'path/to/the/file/you/just/created'

Constant Summary collapse

@@browser_classes =
{}
@@sub_options =
{}
@@default =
nil

Class Method Summary collapse

Class Method Details

.attach(how, what) ⇒ Object

Attach to an existing browser.



74
75
76
77
# File 'lib/watir-classic/browser.rb', line 74

def attach(how, what)
  set_sub_options
  klass.attach(how, what)
end

.browser_namesObject

Returns the names of the browsers that are supported by this module. These are the options for ‘watir_browser’ (env var) or ‘browser:’ (yaml).



120
121
122
# File 'lib/watir-classic/browser.rb', line 120

def browser_names
  @@browser_classes.keys
end

.defaultObject



111
112
113
# File 'lib/watir-classic/browser.rb', line 111

def default
  @@default
end

.default=(option) ⇒ Object

Specifies a default browser. Must be specified before options are parsed.



115
116
117
# File 'lib/watir-classic/browser.rb', line 115

def default= option
  @@default = option
end

.klassObject



87
88
89
90
# File 'lib/watir-classic/browser.rb', line 87

def klass
  key = Watir.options[:browser]
  eval @@browser_classes[key] # this triggers the autoload
end

.new(ignored = nil) ⇒ Object

Create a new instance of a browser driver, as determined by the configuration settings. (Don’t be fooled: this is not actually an instance of Browser class.)



63
64
65
66
# File 'lib/watir-classic/browser.rb', line 63

def new ignored=nil # argument is needed to make watir-classic more compatible with watir-webdriver
  set_sub_options
  klass.new
end

.optionsObject



82
83
84
85
# File 'lib/watir-classic/browser.rb', line 82

def options
  return {} unless klass.respond_to?(:options)
  klass.options
end

.set_options(options) ⇒ Object



78
79
80
81
# File 'lib/watir-classic/browser.rb', line 78

def set_options options
  return unless klass.respond_to?(:set_options)
  klass.set_options options
end

.start(url) ⇒ Object

Create a new instance as with #new and start the browser on the specified url.



69
70
71
72
# File 'lib/watir-classic/browser.rb', line 69

def start url
  set_sub_options
  klass.start url
end

.support(hash_args) ⇒ Object

Add support for the browser option, using the specified class, provided as a string. Optionally, additional options supported by the class can be specified as an array of symbols. Options specified by the user and included in this list will be passed (as a hash) to the set_options class method (if defined) before creating an instance.



97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/watir-classic/browser.rb', line 97

def support hash_args
  option = hash_args[:name]
  class_string = hash_args[:class]
  additional_options = hash_args[:options]
  library = hash_args[:library]
  gem = hash_args[:gem] || library

  @@browser_classes[option] = class_string        
  @@sub_options[option] = additional_options

  autoload class_string, library
  activate_gem gem, option
end