Class: Capybara::Window

Inherits:
Object
  • Object
show all
Defined in:
lib/capybara/window.rb

Overview

The Window class represents a browser window.

You can get an instance of the class by calling either of:

Note that some drivers (e.g. Selenium) support getting size of/resizing/closing only

current window. So if you invoke such method for:

* window that is current, Capybara will make 2 Selenium method invocations
  (get handle of current window + get size/resize/close).
* window that is not current, Capybara will make 4 Selenium method invocations
  (get handle of current window + switch to given handle + get size/resize/close + switch to original handle)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(session, handle) ⇒ Window

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.

Returns a new instance of Window



29
30
31
32
33
# File 'lib/capybara/window.rb', line 29

def initialize(session, handle)
  @session = session
  @driver = session.driver
  @handle = handle
end

Instance Attribute Details

#handleString (readonly)

Returns a string that uniquely identifies window within session

Returns:

  • (String)

    a string that uniquely identifies window within session



23
24
25
# File 'lib/capybara/window.rb', line 23

def handle
  @handle
end

#sessionCapybara::Session (readonly)

Returns session that this window belongs to

Returns:



26
27
28
# File 'lib/capybara/window.rb', line 26

def session
  @session
end

Instance Method Details

#closeObject

Close window.

If this method was called for window that is current, then after calling this method

future invocations of other Capybara methods should raise
`session.driver.no_such_window_error` until another window will be switched to.

If this method was called for window that is not current, then after calling this method current window shouldn remain the same as it was before calling this method.



66
67
68
# File 'lib/capybara/window.rb', line 66

def close
  @driver.close_window(handle)
end

#closed?Boolean

Returns whether the window is closed

Returns:

  • (Boolean)

    whether the window is closed



43
44
45
# File 'lib/capybara/window.rb', line 43

def closed?
  !exists?
end

#current?Boolean

Returns whether this window is the window in which commands are being executed

Returns:

  • (Boolean)

    whether this window is the window in which commands are being executed



49
50
51
52
53
# File 'lib/capybara/window.rb', line 49

def current?
  @driver.current_window_handle == @handle
rescue @driver.no_such_window_error
  false
end

#eql?(other) ⇒ Boolean Also known as: ==

Returns:

  • (Boolean)


103
104
105
# File 'lib/capybara/window.rb', line 103

def eql?(other)
  other.kind_of?(self.class) && @session == other.session && @handle == other.handle
end

#exists?Boolean

Returns whether the window is not closed

Returns:

  • (Boolean)

    whether the window is not closed



37
38
39
# File 'lib/capybara/window.rb', line 37

def exists?
  @driver.window_handles.include?(@handle)
end

#hashObject



108
109
110
# File 'lib/capybara/window.rb', line 108

def hash
  @session.hash ^ @handle.hash
end

#inspectObject



112
113
114
# File 'lib/capybara/window.rb', line 112

def inspect
  "#<Window @handle=#{@handle.inspect}>"
end

#maximizeObject

Maximize window.

If a particular driver (e.g. headless driver) doesn't have concept of maximizing it

may not support this method.

If this method was called for window that is not current, then after calling this method current window shouldn remain the same as it was before calling this method.



99
100
101
# File 'lib/capybara/window.rb', line 99

def maximize
  @driver.maximize_window(handle)
end

#resize_to(width, height) ⇒ Object

Resize window.

If this method was called for window that is not current, then after calling this method current window shouldn remain the same as it was before calling this method.

Parameters:

  • width (String)

    the new window width in pixels

  • height (String)

    the new window height in pixels



87
88
89
# File 'lib/capybara/window.rb', line 87

def resize_to(width, height)
  @driver.resize_window_to(handle, width, height)
end

#sizeArray<(Fixnum, Fixnum)>

Get window size.

If this method was called for window that is not current, then after calling this method current window shouldn remain the same as it was before calling this method.

Returns:

  • (Array<(Fixnum, Fixnum)>)

    an array with width and height



76
77
78
# File 'lib/capybara/window.rb', line 76

def size
  @driver.window_size(handle)
end