class Watir::Window
Public Class Methods
new(driver, selector)
click to toggle source
# File lib/watir-webdriver/window.rb, line 5 def initialize(driver, selector) @driver = driver @selector = selector if selector.empty? @handle = current_window elsif selector.key? :handle @handle = selector.delete :handle else unless selector.keys.all? { |k| [:title, :url, :index].include? k } raise ArgumentError, "invalid window selector: #{selector.inspect}" end end end
Public Instance Methods
==(other)
click to toggle source
Returns true if two windows are equal.
@example
browser.window(index: 0) == browser.window(index: 1) #=> false
@param [Window] other
# File lib/watir-webdriver/window.rb, line 125 def ==(other) return false unless other.kind_of?(self.class) handle == other.handle end
Also aliased as: eql?
close()
click to toggle source
Closes window.
# File lib/watir-webdriver/window.rb, line 152 def close use { @driver.close } end
current?()
click to toggle source
Returns true if window is current.
@example
browser.window.current? #=> true
# File lib/watir-webdriver/window.rb, line 144 def current? current_window == handle end
exists?()
click to toggle source
Returns true if window exists.
@return [Boolean]
# File lib/watir-webdriver/window.rb, line 105 def exists? assert_exists true rescue Exception::NoMatchingWindowFoundException false end
hash()
click to toggle source
# File lib/watir-webdriver/window.rb, line 132 def hash handle.hash ^ self.class.hash end
inspect()
click to toggle source
# File lib/watir-webdriver/window.rb, line 20 def inspect '#<%s:0x%x located=%s>' % [self.class, hash*2, !!@handle] end
maximize()
click to toggle source
Maximizes window.
@example
browser.window.maximize
# File lib/watir-webdriver/window.rb, line 95 def maximize use { @driver.manage.window.maximize } end
move_to(x, y)
click to toggle source
Moves window to given x and y coordinates.
@example
browser.window.move_to 300, 200
@param [Fixnum] x @param [Fixnum] y
# File lib/watir-webdriver/window.rb, line 81 def move_to(x, y) point = Selenium::WebDriver::Point.new(Integer(x), Integer(y)) use { @driver.manage.window.position = point } point end
position()
click to toggle source
Returns window position.
@example
position = browser.window.position [position.x, position.y] #=> [92, 76]
# File lib/watir-webdriver/window.rb, line 47 def position pos = nil use { pos = @driver.manage.window.position } pos end
resize_to(width, height)
click to toggle source
Resizes window to given width and height.
@example
browser.window.resize_to 1600, 1200
@param [Fixnum] width @param [Fixnum] height
# File lib/watir-webdriver/window.rb, line 64 def resize_to(width, height) dimension = Selenium::WebDriver::Dimension.new(Integer(width), Integer(height)) use { @driver.manage.window.size = dimension } dimension end
size()
click to toggle source
Returns window size.
@example
size = browser.window.size [size.width, size.height] #=> [1600, 1200]
# File lib/watir-webdriver/window.rb, line 32 def size size = nil use { size = @driver.manage.window.size } size end
title()
click to toggle source
Returns window title.
@return [String]
# File lib/watir-webdriver/window.rb, line 162 def title title = nil use { title = @driver.title } title end
url()
click to toggle source
Returns window URL.
@return [String]
# File lib/watir-webdriver/window.rb, line 175 def url url = nil use { url = @driver.current_url } url end
use(&blk)
click to toggle source
Switches to given window and executes block, then switches back.
@example
browser.window(title: "closeable window").use do browser.a(id: "close").click end
# File lib/watir-webdriver/window.rb, line 191 def use(&blk) assert_exists @driver.switch_to.window(handle, &blk) self end
Protected Instance Methods
handle()
click to toggle source
# File lib/watir-webdriver/window.rb, line 199 def handle @handle ||= locate end
Private Instance Methods
assert_exists()
click to toggle source
# File lib/watir-webdriver/window.rb, line 220 def assert_exists raise(Exception::NoMatchingWindowFoundException, @selector.inspect) unless @driver.window_handles.include?(handle) end
current_window()
click to toggle source
return a handle to the currently active window if it is still open; otherwise nil
# File lib/watir-webdriver/window.rb, line 225 def current_window @driver.window_handle rescue Selenium::WebDriver::Error::NoSuchWindowError nil end
locate()
click to toggle source
# File lib/watir-webdriver/window.rb, line 210 def locate if @selector.empty? nil elsif @selector.key?(:index) @driver.window_handles[Integer(@selector[:index])] else @driver.window_handles.find { |wh| matches?(wh) } end end
matches?(handle)
click to toggle source
# File lib/watir-webdriver/window.rb, line 231 def matches?(handle) @driver.switch_to.window(handle) { matches_title = @selector[:title].nil? || @selector[:title] === @driver.title matches_url = @selector[:url].nil? || @selector[:url] === @driver.current_url matches_title && matches_url } rescue Selenium::WebDriver::Error::NoSuchWindowError, Selenium::WebDriver::Error::NoSuchDriverError # the window may disappear while we're iterating. false end
selector_string()
click to toggle source
Referenced in EventuallyPresent
# File lib/watir-webdriver/window.rb, line 206 def selector_string @selector.inspect end