Class: Selenium::WebDriver::TargetLocator
- Inherits:
-
Object
- Object
- Selenium::WebDriver::TargetLocator
- Defined in:
- lib/selenium/webdriver/common/target_locator.rb
Instance Method Summary collapse
-
#active_element ⇒ WebDriver::Element
get the active element.
-
#alert ⇒ Object
switches to the currently active modal dialog for this particular driver instance.
-
#default_content ⇒ Object
selects either the first frame on the page, or the main document when a page contains iframes.
-
#frame(id) ⇒ Object
switch to the frame with the given id.
-
#initialize(bridge) ⇒ TargetLocator
constructor
private
A new instance of TargetLocator.
-
#new_window(type = :window) ⇒ Object
steep:ignore:start.
-
#parent_frame ⇒ Object
switch to the parent frame.
-
#window(id) ⇒ Object
switch to the given window handle.
Constructor Details
#initialize(bridge) ⇒ TargetLocator
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 TargetLocator.
27 28 29 |
# File 'lib/selenium/webdriver/common/target_locator.rb', line 27 def initialize(bridge) @bridge = bridge end |
Instance Method Details
#active_element ⇒ WebDriver::Element
get the active element
118 119 120 |
# File 'lib/selenium/webdriver/common/target_locator.rb', line 118 def active_element @bridge.switch_to_active_element end |
#alert ⇒ Object
switches to the currently active modal dialog for this particular driver instance
134 135 136 |
# File 'lib/selenium/webdriver/common/target_locator.rb', line 134 def alert Alert.new(@bridge) end |
#default_content ⇒ Object
selects either the first frame on the page, or the main document when a page contains iframes.
126 127 128 |
# File 'lib/selenium/webdriver/common/target_locator.rb', line 126 def default_content @bridge.switch_to_default_content end |
#frame(id) ⇒ Object
switch to the frame with the given id
35 36 37 |
# File 'lib/selenium/webdriver/common/target_locator.rb', line 35 def frame(id) @bridge.switch_to_frame id end |
#new_window(type = :window) ⇒ Object
steep:ignore:start
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/selenium/webdriver/common/target_locator.rb', line 54 def new_window(type = :window) raise ArgumentError, "Valid types are :tab and :window, received: #{type.inspect}" unless %i[window tab].include?(type) handle = @bridge.new_window(type)['handle'] if block_given? execute_and_close = proc do yield(self) begin @bridge.close rescue Error::NoSuchWindowError # window already closed end end window(handle, &execute_and_close) else window(handle) end end |
#parent_frame ⇒ Object
switch to the parent frame
43 44 45 |
# File 'lib/selenium/webdriver/common/target_locator.rb', line 43 def parent_frame @bridge.switch_to_parent_frame end |
#window(id) ⇒ Object
switch to the given window handle
If given a block, this method will switch back to the original window after block execution.
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/selenium/webdriver/common/target_locator.rb', line 86 def window(id) if block_given? original = begin @bridge.window_handle rescue Error::NoSuchWindowError nil end unless @bridge.window_handles.include? id raise Error::NoSuchWindowError, "The specified identifier '#{id}' is not found in the window handle list" end @bridge.switch_to_window id begin yield ensure current_handles = @bridge.window_handles original = current_handles.first unless current_handles.include? original @bridge.switch_to_window original end else @bridge.switch_to_window id end end |