Class: Selenium::WebDriver::Remote::W3C::Bridge Private

Inherits:
Bridge
  • Object
show all
Defined in:
lib/selenium/webdriver/remote/w3c/bridge.rb,
lib/selenium/webdriver/remote/w3c/commands.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

www.w3.org/TR/2015/WD-webdriver-20150918/#list-of-endpoints

API:

  • private

Constant Summary collapse

QUIT_ERRORS =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

API:

  • private

[IOError].freeze
COMMANDS =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

API:

  • private

{

  #
  # session handling
  #

  new_session: [:post, 'session'.freeze],
  delete_session: [:delete, 'session/:session_id'.freeze],

  #
  # basic driver
  #

  get: [:post, 'session/:session_id/url'.freeze],
  get_current_url: [:get, 'session/:session_id/url'.freeze],
  back: [:post, 'session/:session_id/back'.freeze],
  forward: [:post, 'session/:session_id/forward'.freeze],
  refresh: [:post, 'session/:session_id/refresh'.freeze],
  get_title: [:get, 'session/:session_id/title'.freeze],

  #
  # window and Frame handling
  #

  get_window_handle: [:get, 'session/:session_id/window'.freeze],
  close_window: [:delete, 'session/:session_id/window'.freeze],
  switch_to_window: [:post, 'session/:session_id/window'.freeze],
  get_window_handles: [:get, 'session/:session_id/window/handles'.freeze],
  fullscreen_window: [:post, 'session/:session_id/window/fullscreen'.freeze],
  minimize_window: [:post, 'session/:session_id/window/minimize'.freeze],
  maximize_window: [:post, 'session/:session_id/window/maximize'.freeze],
  set_window_size: [:post, 'session/:session_id/window/size'.freeze],
  get_window_size: [:get, 'session/:session_id/window/size'.freeze],
  set_window_position: [:post, 'session/:session_id/window/position'.freeze],
  get_window_position: [:get, 'session/:session_id/window/position'.freeze],
  set_window_rect: [:post, 'session/:session_id/window/rect'.freeze],
  get_window_rect: [:get, 'session/:session_id/window/rect'.freeze],
  switch_to_frame: [:post, 'session/:session_id/frame'.freeze],
  switch_to_parent_frame: [:post, 'session/:session_id/frame/parent'.freeze],

  #
  # element
  #

  find_element: [:post, 'session/:session_id/element'.freeze],
  find_elements: [:post, 'session/:session_id/elements'.freeze],
  find_child_element: [:post, 'session/:session_id/element/:id/element'.freeze],
  find_child_elements: [:post, 'session/:session_id/element/:id/elements'.freeze],
  get_active_element: [:get, 'session/:session_id/element/active'.freeze],
  is_element_selected: [:get, 'session/:session_id/element/:id/selected'.freeze],
  get_element_attribute: [:get, 'session/:session_id/element/:id/attribute/:name'.freeze],
  get_element_property: [:get, 'session/:session_id/element/:id/property/:name'.freeze],
  get_element_css_value: [:get, 'session/:session_id/element/:id/css/:property_name'.freeze],
  get_element_text: [:get, 'session/:session_id/element/:id/text'.freeze],
  get_element_tag_name: [:get, 'session/:session_id/element/:id/name'.freeze],
  get_element_rect: [:get, 'session/:session_id/element/:id/rect'.freeze],
  is_element_enabled: [:get, 'session/:session_id/element/:id/enabled'.freeze],

  #
  # document handling
  #

  get_page_source: [:get, '/session/:session_id/source'.freeze],
  execute_script: [:post, 'session/:session_id/execute/sync'.freeze],
  execute_async_script: [:post, 'session/:session_id/execute/async'.freeze],

  #
  # cookies
  #

  get_all_cookies: [:get, 'session/:session_id/cookie'.freeze],
  get_cookie: [:get, 'session/:session_id/cookie/:name'.freeze],
  add_cookie: [:post, 'session/:session_id/cookie'.freeze],
  delete_cookie: [:delete, 'session/:session_id/cookie/:name'.freeze],
  delete_all_cookies: [:delete, 'session/:session_id/cookie'.freeze],

  #
  # timeouts
  #

  set_timeout: [:post, 'session/:session_id/timeouts'.freeze],

  #
  # actions
  #

  actions: [:post, 'session/:session_id/actions'.freeze],
  release_actions: [:delete, 'session/:session_id/actions'.freeze],

  #
  # Element Operations
  #

  element_click: [:post, 'session/:session_id/element/:id/click'.freeze],
  element_tap: [:post, 'session/:session_id/element/:id/tap'.freeze],
  element_clear: [:post, 'session/:session_id/element/:id/clear'.freeze],
  element_send_keys: [:post, 'session/:session_id/element/:id/value'.freeze],

  #
  # alerts
  #

  dismiss_alert: [:post, 'session/:session_id/alert/dismiss'.freeze],
  accept_alert: [:post, 'session/:session_id/alert/accept'.freeze],
  get_alert_text: [:get, 'session/:session_id/alert/text'.freeze],
  send_alert_text: [:post, 'session/:session_id/alert/text'.freeze],

  #
  # screenshot
  #

  take_screenshot: [:get, 'session/:session_id/screenshot'.freeze],
  take_element_screenshot: [:get, 'session/:session_id/element/:id/screenshot'.freeze]
}.freeze

Instance Attribute Summary

Attributes inherited from Bridge

#capabilities, #context, #file_detector, #http

Instance Method Summary collapse

Methods inherited from Bridge

#browser, #create_session, handshake, #session_id

Methods included from BridgeHelper

#element_id_from, #parse_cookie_string, #unwrap_script_result

Constructor Details

#initialize(capabilities, session_id, **opts) ⇒ Bridge

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 Bridge.

API:

  • private



35
36
37
38
39
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 35

def initialize(capabilities, session_id, **opts)
  @capabilities = capabilities
  @session_id = session_id
  super(opts)
end

Instance Method Details

#accept_alertObject

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.

alerts

API:

  • private



79
80
81
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 79

def accept_alert
  execute :accept_alert
end

#action(async = false) ⇒ Object Also known as: actions

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.

actions

API:

  • private



333
334
335
336
337
338
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 333

def action(async = false)
  W3CActionBuilder.new self,
                       Interactions.pointer(:mouse, name: 'mouse'),
                       Interactions.key('keyboard'),
                       async
end

#active_elementObject Also known as: switch_to_active_element

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.

finding elements

API:

  • private



503
504
505
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 503

def active_element
  Element.new self, element_id_from(execute(:get_active_element))
end

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.

API:

  • private



309
310
311
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 309

def add_cookie(cookie)
  execute :add_cookie, {}, {cookie: cookie}
end

#alert=(keys) ⇒ Object

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.

API:

  • private



87
88
89
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 87

def alert=(keys)
  execute :send_alert_text, {}, {value: keys.split(//), text: keys}
end

#alert_textObject

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.

API:

  • private



91
92
93
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 91

def alert_text
  execute :get_alert_text
end

#clear_element(element) ⇒ Object

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.

API:

  • private



368
369
370
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 368

def clear_element(element)
  execute :element_clear, id: element
end

#clear_local_storageObject

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.

API:

  • private



239
240
241
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 239

def clear_local_storage
  execute_script('localStorage.clear()')
end

#clear_session_storageObject

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.

API:

  • private



263
264
265
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 263

def clear_session_storage
  execute_script('sessionStorage.clear()')
end

#click_element(element) ⇒ Object

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.

API:

  • private



357
358
359
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 357

def click_element(element)
  execute :element_click, id: element
end

#closeObject

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.

API:

  • private



146
147
148
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 146

def close
  execute :close_window
end

#commands(command) ⇒ Object

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.

API:

  • private



45
46
47
48
49
50
51
52
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 45

def commands(command)
  case command
  when :status, :is_element_displayed
    Remote::OSS::Bridge::COMMANDS[command]
  else
    COMMANDS[command]
  end
end

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.

API:

  • private



317
318
319
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 317

def cookie(name)
  execute :get_cookie, name: name
end

#cookiesObject

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.

API:

  • private



321
322
323
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 321

def cookies
  execute :get_all_cookies
end

#delete_all_cookiesObject

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.

API:

  • private



325
326
327
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 325

def delete_all_cookies
  execute :delete_all_cookies
end

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.

API:

  • private



313
314
315
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 313

def delete_cookie(name)
  execute :delete_cookie, name: name
end

#dialectObject

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.

API:

  • private



41
42
43
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 41

def dialect
  :w3c
end

#dismiss_alertObject

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.

API:

  • private



83
84
85
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 83

def dismiss_alert
  execute :dismiss_alert
end

#drag_element(element, right_by, down_by) ⇒ Object

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.

API:

  • private



379
380
381
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 379

def drag_element(element, right_by, down_by)
  execute :drag_element, {id: element}, {x: right_by, y: down_by}
end

#element_attribute(element, name) ⇒ Object

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.

API:

  • private



444
445
446
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 444

def element_attribute(element, name)
  execute_atom :getAttribute, element, name
end

#element_displayed?(element) ⇒ Boolean

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:

API:

  • private



491
492
493
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 491

def element_displayed?(element)
  execute :is_element_displayed, id: element
end

#element_enabled?(element) ⇒ Boolean

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:

API:

  • private



483
484
485
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 483

def element_enabled?(element)
  execute :is_element_enabled, id: element
end

#element_location(element) ⇒ Object

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.

API:

  • private



460
461
462
463
464
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 460

def element_location(element)
  data = execute :get_element_rect, id: element

  Point.new data['x'], data['y']
end

#element_location_once_scrolled_into_view(element) ⇒ Object

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.

API:

  • private



472
473
474
475
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 472

def element_location_once_scrolled_into_view(element)
  send_keys_to_element(element, [''])
  element_location(element)
end

#element_property(element, name) ⇒ Object

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.

API:

  • private



448
449
450
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 448

def element_property(element, name)
  execute :get_element_property, id: element.ref, name: name
end

#element_rect(element) ⇒ Object

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.

API:

  • private



466
467
468
469
470
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 466

def element_rect(element)
  data = execute :get_element_rect, id: element

  Rectangle.new data['x'], data['y'], data['width'], data['height']
end

#element_selected?(element) ⇒ Boolean

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:

API:

  • private



487
488
489
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 487

def element_selected?(element)
  execute :is_element_selected, id: element
end

#element_size(element) ⇒ Object

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.

API:

  • private



477
478
479
480
481
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 477

def element_size(element)
  data = execute :get_element_rect, id: element

  Dimension.new data['width'], data['height']
end

#element_tag_name(element) ⇒ Object

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.

element properties

API:

  • private



440
441
442
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 440

def element_tag_name(element)
  execute :get_element_tag_name, id: element
end

#element_text(element) ⇒ Object

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.

API:

  • private



456
457
458
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 456

def element_text(element)
  execute :get_element_text, id: element
end

#element_value(element) ⇒ Object

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.

API:

  • private



452
453
454
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 452

def element_value(element)
  element_property element, 'value'
end

#element_value_of_css_property(element, prop) ⇒ Object

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.

API:

  • private



495
496
497
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 495

def element_value_of_css_property(element, prop)
  execute :get_element_css_value, id: element, property_name: prop
end

#execute_async_script(script, *args) ⇒ Object

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.

API:

  • private



296
297
298
299
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 296

def execute_async_script(script, *args)
  result = execute :execute_async_script, {}, {script: script, args: args}
  unwrap_script_result result
end

#execute_script(script, *args) ⇒ Object

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.

javascript execution

API:

  • private



291
292
293
294
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 291

def execute_script(script, *args)
  result = execute :execute_script, {}, {script: script, args: args}
  unwrap_script_result result
end

#find_element_by(how, what, parent = nil) ⇒ Object

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.

API:

  • private



509
510
511
512
513
514
515
516
517
518
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 509

def find_element_by(how, what, parent = nil)
  how, what = convert_locators(how, what)

  id = if parent
         execute :find_child_element, {id: parent}, {using: how, value: what}
       else
         execute :find_element, {}, {using: how, value: what}
       end
  Element.new self, element_id_from(id)
end

#find_elements_by(how, what, parent = nil) ⇒ Object

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.

API:

  • private



520
521
522
523
524
525
526
527
528
529
530
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 520

def find_elements_by(how, what, parent = nil)
  how, what = convert_locators(how, what)

  ids = if parent
          execute :find_child_elements, {id: parent}, {using: how, value: what}
        else
          execute :find_elements, {}, {using: how, value: what}
        end

  ids.map { |id| Element.new self, element_id_from(id) }
end

#full_screen_windowObject

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.

API:

  • private



193
194
195
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 193

def full_screen_window
  execute :fullscreen_window
end

#get(url) ⇒ Object

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.

API:

  • private



58
59
60
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 58

def get(url)
  execute :get, {}, {url: url}
end

#go_backObject

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.

navigation

API:

  • private



99
100
101
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 99

def go_back
  execute :back
end

#go_forwardObject

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.

API:

  • private



103
104
105
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 103

def go_forward
  execute :forward
end

#implicit_wait_timeout=(milliseconds) ⇒ Object

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.

API:

  • private



62
63
64
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 62

def implicit_wait_timeout=(milliseconds)
  timeout('implicit', milliseconds)
end

#keyboardObject

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.

Raises:

API:

  • private



345
346
347
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 345

def keyboard
  raise Error::UnsupportedOperationError, '#keyboard is no longer supported, use #action instead'
end

#local_storage_item(key, value = nil) ⇒ Object

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.

HTML 5

API:

  • private



223
224
225
226
227
228
229
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 223

def local_storage_item(key, value = nil)
  if value
    execute_script("localStorage.setItem('#{key}', '#{value}')")
  else
    execute_script("return localStorage.getItem('#{key}')")
  end
end

#local_storage_keysObject

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.

API:

  • private



235
236
237
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 235

def local_storage_keys
  execute_script('return Object.keys(localStorage)')
end

#local_storage_sizeObject

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.

API:

  • private



243
244
245
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 243

def local_storage_size
  execute_script('return localStorage.length')
end

#locationObject

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.

Raises:

API:

  • private



271
272
273
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 271

def location
  raise Error::UnsupportedOperationError, 'The W3C standard does not currently support getting location'
end

#maximize_window(handle = :current) ⇒ Object

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.

API:

  • private



186
187
188
189
190
191
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 186

def maximize_window(handle = :current)
  unless handle == :current
    raise Error::UnsupportedOperationError, 'Switch to desired window before changing its size'
  end
  execute :maximize_window
end

#minimize_windowObject

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.

API:

  • private



182
183
184
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 182

def minimize_window
  execute :minimize_window
end

#mouseObject

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.

Raises:

API:

  • private



341
342
343
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 341

def mouse
  raise Error::UnsupportedOperationError, '#mouse is no longer supported, use #action instead'
end

#network_connectionObject

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.

Raises:

API:

  • private



279
280
281
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 279

def network_connection
  raise Error::UnsupportedOperationError, 'The W3C standard does not currently support getting network connection'
end

#network_connection=(_type) ⇒ Object

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.

Raises:

API:

  • private



283
284
285
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 283

def network_connection=(_type)
  raise Error::UnsupportedOperationError, 'The W3C standard does not currently support setting network connection'
end

#optionsObject

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.

cookies

API:

  • private



305
306
307
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 305

def options
  @options ||= WebDriver::W3COptions.new(self)
end

#page_sourceObject

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.

API:

  • private



115
116
117
118
119
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 115

def page_source
  execute_script('var source = document.documentElement.outerHTML;' \
                    'if (!source) { source = new XMLSerializer().serializeToString(document); }' \
                    'return source;')
end

#quitObject

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.

API:

  • private



140
141
142
143
144
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 140

def quit
  execute :delete_session
  http.close
rescue *QUIT_ERRORS
end

#refreshObject

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.

API:

  • private



150
151
152
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 150

def refresh
  execute :refresh
end

#release_actionsObject

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.

API:

  • private



353
354
355
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 353

def release_actions
  execute :release_actions
end

#remove_local_storage_item(key) ⇒ Object

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.

API:

  • private



231
232
233
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 231

def remove_local_storage_item(key)
  execute_script("localStorage.removeItem('#{key}')")
end

#remove_session_storage_item(key) ⇒ Object

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.

API:

  • private



255
256
257
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 255

def remove_session_storage_item(key)
  execute_script("sessionStorage.removeItem('#{key}')")
end

#reposition_window(x, y) ⇒ Object

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.

API:

  • private



197
198
199
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 197

def reposition_window(x, y)
  execute :set_window_rect, {}, {x: x, y: y}
end

#resize_window(width, height, handle = :current) ⇒ Object

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.

API:

  • private



166
167
168
169
170
171
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 166

def resize_window(width, height, handle = :current)
  unless handle == :current
    raise Error::WebDriverError, 'Switch to desired window before changing its size'
  end
  execute :set_window_rect, {}, {width: width, height: height}
end

#screen_orientationObject

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.

API:

  • private



432
433
434
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 432

def screen_orientation
  execute :get_screen_orientation
end

#screen_orientation=(orientation) ⇒ Object

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.

API:

  • private



428
429
430
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 428

def screen_orientation=(orientation)
  execute :set_screen_orientation, {}, {orientation: orientation}
end

#screenshotObject

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.

API:

  • private



215
216
217
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 215

def screenshot
  execute :take_screenshot
end

#script_timeout=(milliseconds) ⇒ Object

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.

API:

  • private



66
67
68
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 66

def script_timeout=(milliseconds)
  timeout('script', milliseconds)
end

#send_actions(data) ⇒ Object

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.

API:

  • private



349
350
351
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 349

def send_actions(data)
  execute :actions, {}, {actions: data}
end

#send_keys_to_element(element, keys) ⇒ Object

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.

TODO: - Implement file verification

API:

  • private



362
363
364
365
366
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 362

def send_keys_to_element(element, keys)
  # Keep .split(//) for backward compatibility for now
  text = keys.join('')
  execute :element_send_keys, {id: element}, {value: text.split(//), text: text}
end

#session_storage_item(key, value = nil) ⇒ Object

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.

API:

  • private



247
248
249
250
251
252
253
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 247

def session_storage_item(key, value = nil)
  if value
    execute_script("sessionStorage.setItem('#{key}', '#{value}')")
  else
    execute_script("return sessionStorage.getItem('#{key}')")
  end
end

#session_storage_keysObject

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.

API:

  • private



259
260
261
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 259

def session_storage_keys
  execute_script('return Object.keys(sessionStorage)')
end

#session_storage_sizeObject

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.

API:

  • private



267
268
269
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 267

def session_storage_size
  execute_script('return sessionStorage.length')
end

#set_location(_lat, _lon, _alt) ⇒ Object

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.

Raises:

API:

  • private



275
276
277
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 275

def set_location(_lat, _lon, _alt)
  raise Error::UnsupportedOperationError, 'The W3C standard does not currently support setting location'
end

#set_window_rect(x: nil, y: nil, width: nil, height: nil) ⇒ Object

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.

API:

  • private



206
207
208
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 206

def set_window_rect(x: nil, y: nil, width: nil, height: nil)
  execute :set_window_rect, {}, {x: x, y: y, width: width, height: height}
end

#statusObject

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.

API:

  • private



54
55
56
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 54

def status
  execute :status
end

#submit_element(element) ⇒ Object

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.

API:

  • private



372
373
374
375
376
377
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 372

def submit_element(element)
  form = find_element_by('xpath', "./ancestor-or-self::form", element)
  execute_script("var e = arguments[0].ownerDocument.createEvent('Event');" \
                    "e.initEvent('submit', true, true);" \
                    'if (arguments[0].dispatchEvent(e)) { arguments[0].submit() }', form.as_json)
end

#switch_to_default_contentObject

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.

API:

  • private



134
135
136
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 134

def switch_to_default_content
  switch_to_frame nil
end

#switch_to_frame(id) ⇒ Object

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.

API:

  • private



125
126
127
128
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 125

def switch_to_frame(id)
  id = find_element_by('id', id) if id.is_a? String
  execute :switch_to_frame, {}, {id: id}
end

#switch_to_parent_frameObject

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.

API:

  • private



130
131
132
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 130

def switch_to_parent_frame
  execute :switch_to_parent_frame
end

#switch_to_window(name) ⇒ Object

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.

API:

  • private



121
122
123
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 121

def switch_to_window(name)
  execute :switch_to_window, {}, {handle: name}
end

#timeout(type, milliseconds) ⇒ Object

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.

API:

  • private



70
71
72
73
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 70

def timeout(type, milliseconds)
  type = 'pageLoad' if type == 'page load'
  execute :set_timeout, {}, {type => milliseconds}
end

#titleObject

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.

API:

  • private



111
112
113
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 111

def title
  execute :get_title
end

#touch_double_tap(element) ⇒ Object

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.

API:

  • private



387
388
389
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 387

def touch_double_tap(element)
  execute :touch_double_tap, {}, {element: element}
end

#touch_down(x, y) ⇒ Object

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.

API:

  • private



395
396
397
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 395

def touch_down(x, y)
  execute :touch_down, {}, {x: x, y: y}
end

#touch_element_flick(element, right_by, down_by, speed) ⇒ Object

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.

API:

  • private



421
422
423
424
425
426
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 421

def touch_element_flick(element, right_by, down_by, speed)
  execute :touch_flick, {}, {element: element,
                             xoffset: right_by,
                             yoffset: down_by,
                             speed: speed}
end

#touch_flick(xspeed, yspeed) ⇒ Object

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.

API:

  • private



417
418
419
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 417

def touch_flick(xspeed, yspeed)
  execute :touch_flick, {}, {xspeed: xspeed, yspeed: yspeed}
end

#touch_long_press(element) ⇒ Object

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.

API:

  • private



391
392
393
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 391

def touch_long_press(element)
  execute :touch_long_press, {}, {element: element}
end

#touch_move(x, y) ⇒ Object

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.

API:

  • private



403
404
405
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 403

def touch_move(x, y)
  execute :touch_move, {}, {x: x, y: y}
end

#touch_scroll(element, x, y) ⇒ Object

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.

API:

  • private



407
408
409
410
411
412
413
414
415
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 407

def touch_scroll(element, x, y)
  if element
    execute :touch_scroll, {}, {element: element,
                                xoffset: x,
                                yoffset: y}
  else
    execute :touch_scroll, {}, {xoffset: x, yoffset: y}
  end
end

#touch_single_tap(element) ⇒ Object

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.

API:

  • private



383
384
385
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 383

def touch_single_tap(element)
  execute :touch_single_tap, {}, {element: element}
end

#touch_up(x, y) ⇒ Object

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.

API:

  • private



399
400
401
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 399

def touch_up(x, y)
  execute :touch_up, {}, {x: x, y: y}
end

#urlObject

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.

API:

  • private



107
108
109
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 107

def url
  execute :get_current_url
end

#window_handleObject

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.

API:

  • private



162
163
164
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 162

def window_handle
  execute :get_window_handle
end

#window_handlesObject

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.

window handling

API:

  • private



158
159
160
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 158

def window_handles
  execute :get_window_handles
end

#window_positionObject

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.

API:

  • private



201
202
203
204
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 201

def window_position
  data = execute :get_window_rect
  Point.new data['x'], data['y']
end

#window_rectObject

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.

API:

  • private



210
211
212
213
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 210

def window_rect
  data = execute :get_window_rect
  Rectangle.new data['x'], data['y'], data['width'], data['height']
end

#window_size(handle = :current) ⇒ Object

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.

API:

  • private



173
174
175
176
177
178
179
180
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 173

def window_size(handle = :current)
  unless handle == :current
    raise Error::UnsupportedOperationError, 'Switch to desired window before getting its size'
  end
  data = execute :get_window_rect

  Dimension.new data['width'], data['height']
end