123456789_123456789_123456789_123456789_123456789_

Class: Selenium::WebDriver::TargetLocator

Relationships & Source Files
Inherits: Object
Defined in: rb/lib/selenium/webdriver/common/target_locator.rb

Class Method Summary

Instance Method Summary

Constructor Details

.new(bridge) ⇒ TargetLocator

This method is for internal use only.
[ GitHub ]

  
# File 'rb/lib/selenium/webdriver/common/target_locator.rb', line 27

def initialize(bridge)
  @bridge = bridge
end

Instance Method Details

#active_elementWebDriver::Element

get the active element

[ GitHub ]

  
# File 'rb/lib/selenium/webdriver/common/target_locator.rb', line 117

def active_element
  @bridge.switch_to_active_element
end

#alert

switches to the currently active modal dialog for this particular driver instance

[ GitHub ]

  
# File 'rb/lib/selenium/webdriver/common/target_locator.rb', line 133

def alert
  Alert.new(@bridge)
end

#default_content

selects either the first frame on the page, or the main document when a page contains iframes.

[ GitHub ]

  
# File 'rb/lib/selenium/webdriver/common/target_locator.rb', line 125

def default_content
  @bridge.switch_to_default_content
end

#frame(id)

switch to the frame with the given id

[ GitHub ]

  
# File 'rb/lib/selenium/webdriver/common/target_locator.rb', line 35

def frame(id)
  @bridge.switch_to_frame id
end

#new_window(type = :window)

Switch to a new top-level browsing context

Parameters:

  • type (defaults to: :window)

    either :tab or :window

Raises:

  • (ArgumentError)
[ GitHub ]

  
# File 'rb/lib/selenium/webdriver/common/target_locator.rb', line 53

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

switch to the parent frame

[ GitHub ]

  
# File 'rb/lib/selenium/webdriver/common/target_locator.rb', line 43

def parent_frame
  @bridge.switch_to_parent_frame
end

#window(id)

switch to the given window handle

If given a block, this method will switch back to the original window after block execution.

Parameters:

  • id

    A window handle, obtained through Driver#window_handles

[ GitHub ]

  
# File 'rb/lib/selenium/webdriver/common/target_locator.rb', line 84

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
      returned = yield
    ensure
      current_handles = @bridge.window_handles
      original = current_handles.first unless current_handles.include? original
      @bridge.switch_to_window original
      returned
    end
  else
    @bridge.switch_to_window id
  end
end