Class: Watir::Browser
- Inherits:
-
Object
- Object
- Watir::Browser
- Includes:
- AlertHelper, Container, HasWindow, Waitable
- Defined in:
- lib/watir-webdriver/browser.rb,
lib/watir-webdriver/extensions/alerts.rb,
lib/watir-webdriver/extensions/nokogiri.rb
Overview
The main class through which you control the browser.
Constant Summary
Constants included from Atoms
Instance Attribute Summary collapse
-
#driver ⇒ Object
(also: #wd)
readonly
Returns the value of attribute driver.
Class Method Summary collapse
-
.start(url, browser = :firefox, *args) ⇒ Watir::Browser
Creates a Watir::Browser instance and goes to URL.
Instance Method Summary collapse
-
#add_checker(checker = nil) {|| ... } ⇒ Object
Adds new checker.
-
#alert ⇒ Watir::Alert
Handles JavaScript alerts, confirms and prompts.
-
#assert_exists ⇒ Object
(also: #assert_not_stale)
private
Protocol shared with Watir::Element.
-
#back ⇒ Object
Navigates back in history.
- #browser ⇒ Object
-
#close ⇒ Object
(also: #quit)
Closes browser.
-
#cookies ⇒ Watir::Cookies
Handles cookies.
-
#disable_checker(checker) ⇒ Object
Deletes checker.
-
#execute_script(script, *args) ⇒ Object
Executes JavaScript snippet.
-
#exist? ⇒ Boolean
(also: #exists?)
Returns true if browser is not closed and false otherwise.
-
#forward ⇒ Object
Navigates forward in history.
-
#goto(uri) ⇒ String
Goes to the given URL.
-
#html ⇒ String
Returns HTML code of current page.
-
#initialize(browser = :firefox, *args) ⇒ Browser
constructor
Creates a Watir::Browser instance.
- #inspect ⇒ Object
-
#name ⇒ Symbol
Returns browser name.
-
#ready_state ⇒ String
Returns readyState of document.
-
#refresh ⇒ Object
Refreshes current page.
- #reset! ⇒ Object
-
#run_checkers ⇒ Object
Runs checkers.
-
#screenshot ⇒ Watir::Screenshot
Handles screenshots of current pages.
-
#send_keys(*args) ⇒ Object
Sends sequence of keystrokes to currently active element.
-
#status ⇒ String
Returns the text of status bar.
-
#text ⇒ String
Returns text of page body.
-
#title ⇒ String
Returns title of current page.
-
#url ⇒ String
Returns URL of current page.
-
#wait(timeout = 5) ⇒ Object
Waits until readyState of document is complete.
-
#without_checkers {|| ... } ⇒ Object
Executes a block without running error checkers.
Methods included from AlertHelper
Methods included from Waitable
Methods included from HasWindow
Methods included from Container
#a, #abbr, #abbrs, #address, #addresses, #area, #areas, #article, #articles, #as, #aside, #asides, #audio, #audios, #b, #base, #bases, #bdi, #bdis, #bdo, #bdos, #blockquote, #blockquotes, #body, #bodys, #br, #brs, #bs, #button, #buttons, #canvas, #canvases, #caption, #captions, #checkbox, #checkboxes, #cite, #cites, #code, #codes, #col, #colgroup, #colgroups, #cols, #data, #datalist, #datalists, #datas, #dd, #dds, #del, #dels, #details, #detailses, #dfn, #dfns, #dialog, #dialogs, #div, #divs, #dl, #dls, #dt, #dts, #element, #elements, #em, #embed, #embeds, #ems, #extract_selector, #field_set, #field_sets, #fieldset, #fieldsets, #figcaption, #figcaptions, #figure, #figures, #file_field, #file_fields, #font, #fonts, #footer, #footers, #form, #forms, #frame, #frames, #frameset, #framesets, #h1, #h1s, #h2, #h2s, #h3, #h3s, #h4, #h4s, #h5, #h5s, #h6, #h6s, #head, #header, #headers, #heads, #hgroup, #hgroups, #hidden, #hiddens, #hr, #hrs, #htmls, #i, #iframe, #iframes, #image, #images, #img, #imgs, #input, #inputs, #ins, #inses, #is, #kbd, #kbds, #keygen, #keygens, #label, #labels, #legend, #legends, #li, #link, #links, #lis, #main, #mains, #map, #maps, #mark, #marks, #menu, #menuitem, #menuitems, #menus, #meta, #metas, #meter, #meters, #nav, #navs, #noscript, #noscripts, #object, #objects, #ol, #ols, #optgroup, #optgroups, #option, #options, #output, #outputs, #p, #param, #params, #pre, #pres, #progress, #progresses, #ps, #q, #qs, #radio, #radios, #rp, #rps, #rt, #rts, #rubies, #ruby, #s, #samp, #samps, #script, #scripts, #section, #sections, #select, #select_list, #select_lists, #selects, #small, #smalls, #source, #sources, #span, #spans, #ss, #strong, #strongs, #style, #styles, #sub, #subs, #summaries, #summary, #sup, #sups, #table, #tables, #tbody, #tbodys, #td, #tds, #template, #templates, #text_field, #text_fields, #textarea, #textareas, #tfoot, #tfoots, #th, #thead, #theads, #ths, #time, #times, #titles, #tr, #track, #tracks, #trs, #u, #ul, #uls, #us, #var, #vars, #video, #videos, #wbr, #wbrs
Methods included from Atoms
Methods included from XpathSupport
Constructor Details
#initialize(browser = :firefox, *args) ⇒ Browser
Creates a Watir::Browser instance.
43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/watir-webdriver/browser.rb', line 43 def initialize(browser = :firefox, *args) case browser when Symbol, String @driver = Selenium::WebDriver.for browser.to_sym, *args when Selenium::WebDriver::Driver @driver = browser else raise ArgumentError, "expected Symbol or Selenium::WebDriver::Driver, got #{browser.class}" end @error_checkers = [] @current_frame = nil @closed = false end |
Instance Attribute Details
#driver ⇒ Object (readonly) Also known as: wd
Returns the value of attribute driver.
13 14 15 |
# File 'lib/watir-webdriver/browser.rb', line 13 def driver @driver end |
Class Method Details
.start(url, browser = :firefox, *args) ⇒ Watir::Browser
Creates a Watir::Browser instance and goes to URL.
28 29 30 31 32 33 |
# File 'lib/watir-webdriver/browser.rb', line 28 def start(url, browser = :firefox, *args) b = new(browser, *args) b.goto url b end |
Instance Method Details
#add_checker(checker = nil) {|| ... } ⇒ Object
Adds new checker.
Checkers are generally used to ensure application under test does not encounter any error. They are automatically executed after following events:
1. Open URL
2. Refresh page
3. Click, double-click or right-click on element
305 306 307 308 309 310 311 312 313 |
# File 'lib/watir-webdriver/browser.rb', line 305 def add_checker(checker = nil, &block) if block_given? @error_checkers << block elsif checker.respond_to? :call @error_checkers << checker else raise ArgumentError, "expected block or object responding to #call" end end |
#alert ⇒ Watir::Alert
Handles JavaScript alerts, confirms and prompts.
193 194 195 |
# File 'lib/watir-webdriver/browser.rb', line 193 def alert Alert.new driver.switch_to end |
#assert_exists ⇒ Object Also known as: assert_not_stale
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Protocol shared with Watir::Element
380 381 382 383 384 385 386 387 388 389 |
# File 'lib/watir-webdriver/browser.rb', line 380 def assert_exists if @closed raise Exception::Error, "browser was closed" elsif !window.present? raise Exception::NoMatchingWindowFoundException, "browser window was closed" else driver.switch_to.default_content true end end |
#back ⇒ Object
Navigates back in history.
87 88 89 |
# File 'lib/watir-webdriver/browser.rb', line 87 def back @driver.navigate.back end |
#browser ⇒ Object
396 397 398 |
# File 'lib/watir-webdriver/browser.rb', line 396 def browser self end |
#close ⇒ Object Also known as: quit
Closes browser.
134 135 136 137 138 |
# File 'lib/watir-webdriver/browser.rb', line 134 def close return if @closed @driver.quit @closed = true end |
#cookies ⇒ Watir::Cookies
Handles cookies.
147 148 149 |
# File 'lib/watir-webdriver/browser.rb', line 147 def @cookies ||= Cookies.new driver.manage end |
#disable_checker(checker) ⇒ Object
Deletes checker.
329 330 331 |
# File 'lib/watir-webdriver/browser.rb', line 329 def disable_checker(checker) @error_checkers.delete(checker) end |
#execute_script(script, *args) ⇒ Object
Executes JavaScript snippet.
If you are going to use the value snippet returns, make sure to use ‘return` explicitly.
253 254 255 256 257 258 |
# File 'lib/watir-webdriver/browser.rb', line 253 def execute_script(script, *args) args.map! { |e| e.kind_of?(Watir::Element) ? e.wd : e } returned = @driver.execute_script(script, *args) wrap_elements_in(returned) end |
#exist? ⇒ Boolean Also known as: exists?
Returns true if browser is not closed and false otherwise.
366 367 368 369 370 371 |
# File 'lib/watir-webdriver/browser.rb', line 366 def exist? assert_exists true rescue Exception::NoMatchingWindowFoundException, Exception::Error false end |
#forward ⇒ Object
Navigates forward in history.
95 96 97 |
# File 'lib/watir-webdriver/browser.rb', line 95 def forward @driver.navigate.forward end |
#goto(uri) ⇒ String
Goes to the given URL.
74 75 76 77 78 79 80 81 |
# File 'lib/watir-webdriver/browser.rb', line 74 def goto(uri) uri = "http://#{uri}" unless uri =~ URI.regexp @driver.navigate.to uri run_checkers url end |
#html ⇒ String
Returns HTML code of current page.
182 183 184 185 |
# File 'lib/watir-webdriver/browser.rb', line 182 def html # use body.html instead? @driver.page_source end |
#inspect ⇒ Object
58 59 60 61 62 |
# File 'lib/watir-webdriver/browser.rb', line 58 def inspect '#<%s:0x%x url=%s title=%s>' % [self.class, hash*2, url.inspect, title.inspect] rescue '#<%s:0x%x closed=%s>' % [self.class, hash*2, @closed.to_s] end |
#name ⇒ Symbol
Returns browser name.
162 163 164 |
# File 'lib/watir-webdriver/browser.rb', line 162 def name @driver.browser end |
#ready_state ⇒ String
Returns readyState of document.
225 226 227 |
# File 'lib/watir-webdriver/browser.rb', line 225 def ready_state execute_script 'return document.readyState' end |
#refresh ⇒ Object
Refreshes current page.
201 202 203 204 |
# File 'lib/watir-webdriver/browser.rb', line 201 def refresh @driver.navigate.refresh run_checkers end |
#reset! ⇒ Object
392 393 394 |
# File 'lib/watir-webdriver/browser.rb', line 392 def reset! # no-op end |
#run_checkers ⇒ Object
Runs checkers.
337 338 339 |
# File 'lib/watir-webdriver/browser.rb', line 337 def run_checkers @error_checkers.each { |e| e.call(self) } if !@error_checkers.empty? && window.present? end |
#screenshot ⇒ Watir::Screenshot
Handles screenshots of current pages.
280 281 282 |
# File 'lib/watir-webdriver/browser.rb', line 280 def screenshot Screenshot.new driver end |
#send_keys(*args) ⇒ Object
Sends sequence of keystrokes to currently active element.
270 271 272 |
# File 'lib/watir-webdriver/browser.rb', line 270 def send_keys(*args) @driver.switch_to.active_element.send_keys(*args) end |
#status ⇒ String
Returns the text of status bar.
235 236 237 |
# File 'lib/watir-webdriver/browser.rb', line 235 def status execute_script "return window.status;" end |
#text ⇒ String
Returns text of page body.
172 173 174 |
# File 'lib/watir-webdriver/browser.rb', line 172 def text @driver.find_element(:tag_name, "body").text end |
#title ⇒ String
Returns title of current page.
126 127 128 |
# File 'lib/watir-webdriver/browser.rb', line 126 def title @driver.title end |
#url ⇒ String
Returns URL of current page.
110 111 112 113 |
# File 'lib/watir-webdriver/browser.rb', line 110 def url assert_exists @driver.current_url end |
#wait(timeout = 5) ⇒ Object
Waits until readyState of document is complete.
213 214 215 216 217 |
# File 'lib/watir-webdriver/browser.rb', line 213 def wait(timeout = 5) wait_until(timeout, "waiting for document.readyState == 'complete'") do ready_state == "complete" end end |
#without_checkers {|| ... } ⇒ Object
Executes a block without running error checkers.
352 353 354 355 356 357 358 |
# File 'lib/watir-webdriver/browser.rb', line 352 def without_checkers current_checkers = @error_checkers @error_checkers = [] yield(self) ensure @error_checkers = current_checkers end |