Class: Selenium::WebDriver::TargetLocator

Inherits:
Object
  • Object
show all
Defined in:
lib/selenium/webdriver/common/target_locator.rb

Instance Method Summary collapse

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.



28
29
30
# File 'lib/selenium/webdriver/common/target_locator.rb', line 28

def initialize(bridge)
  @bridge = bridge
end

Instance Method Details

#active_elementWebDriver::Element

get the active element



91
92
93
# File 'lib/selenium/webdriver/common/target_locator.rb', line 91

def active_element
  @bridge.switchToActiveElement
end

#alertObject

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



107
108
109
# File 'lib/selenium/webdriver/common/target_locator.rb', line 107

def alert
  Alert.new(@bridge)
end

#default_contentObject

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



99
100
101
# File 'lib/selenium/webdriver/common/target_locator.rb', line 99

def default_content
  @bridge.switchToDefaultContent
end

#frame(id) ⇒ Object

switch to the frame with the given id



36
37
38
# File 'lib/selenium/webdriver/common/target_locator.rb', line 36

def frame(id)
  @bridge.switchToFrame id
end

#parent_frameObject

switch to the parent frame



44
45
46
# File 'lib/selenium/webdriver/common/target_locator.rb', line 44

def parent_frame
  @bridge.switchToParentFrame
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.



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/selenium/webdriver/common/target_locator.rb', line 58

def window(id)
  if block_given?
    original = begin
      @bridge.getCurrentWindowHandle
    rescue Error::NoSuchWindowError
      nil
    end

    unless @bridge.getWindowHandles.include? id
      raise Error::NoSuchWindowError, "The specified identifier '#{id}' is not found in the window handle list"
    end

    @bridge.switchToWindow id

    begin
      returned = yield
    ensure
      current_handles = @bridge.getWindowHandles
      original = current_handles.first unless current_handles.include? original
      @bridge.switchToWindow original
      returned
    end
  else
    @bridge.switchToWindow id
  end
end