Class: Selenium::WebDriver::Remote::OSS::Bridge Private

Inherits:
Bridge
  • Object
show all
Defined in:
lib/selenium/webdriver/remote/oss/bridge.rb,
lib/selenium/webdriver/remote/oss/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.

github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol#command-reference

API:

  • private

Constant Summary collapse

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

{
  get_capabilities: [:get, 'session/:session_id'.freeze],
  status: [:get, 'status'.freeze],

  #
  # basic driver
  #

  get_current_url: [:get, 'session/:session_id/url'.freeze],
  get: [:post, 'session/:session_id/url'.freeze],
  go_forward: [:post, 'session/:session_id/forward'.freeze],
  go_back: [:post, 'session/:session_id/back'.freeze],
  refresh: [:post, 'session/:session_id/refresh'.freeze],
  quit: [:delete, 'session/:session_id'.freeze],
  close: [:delete, 'session/:session_id/window'.freeze],
  get_page_source: [:get, 'session/:session_id/source'.freeze],
  get_title: [:get, 'session/:session_id/title'.freeze],
  find_element: [:post, 'session/:session_id/element'.freeze],
  find_elements: [:post, 'session/:session_id/elements'.freeze],
  get_active_element: [:post, 'session/:session_id/element/active'.freeze],

  #
  # window handling
  #

  get_current_window_handle: [:get, 'session/:session_id/window_handle'.freeze],
  get_window_handles: [:get, 'session/:session_id/window_handles'.freeze],
  set_window_size: [:post, 'session/:session_id/window/:window_handle/size'.freeze],
  set_window_position: [:post, 'session/:session_id/window/:window_handle/position'.freeze],
  get_window_size: [:get, 'session/:session_id/window/:window_handle/size'.freeze],
  get_window_position: [:get, 'session/:session_id/window/:window_handle/position'.freeze],
  maximize_window: [:post, 'session/:session_id/window/:window_handle/maximize'.freeze],

  #
  # script execution
  #

  execute_script: [:post, 'session/:session_id/execute'.freeze],
  execute_async_script: [:post, 'session/:session_id/execute_async'.freeze],

  #
  # screenshot
  #

  screenshot: [:get, 'session/:session_id/screenshot'.freeze],

  #
  # alerts
  #

  dismiss_alert: [:post, 'session/:session_id/dismiss_alert'.freeze],
  accept_alert: [:post, 'session/:session_id/accept_alert'.freeze],
  get_alert_text: [:get, 'session/:session_id/alert_text'.freeze],
  set_alert_value: [:post, 'session/:session_id/alert_text'.freeze],
  set_authentication: [:post, 'session/:session_id/alert/credentials'.freeze],

  #
  # target locator
  #

  switch_to_frame: [:post, 'session/:session_id/frame'.freeze],
  switch_to_parent_frame: [:post, 'session/:session_id/frame/parent'.freeze],
  switch_to_window: [:post, 'session/:session_id/window'.freeze],

  #
  # options
  #

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

  #
  # timeouts
  #

  implicitly_wait: [:post, 'session/:session_id/timeouts/implicit_wait'.freeze],
  set_script_timeout: [:post, 'session/:session_id/timeouts/async_script'.freeze],
  set_timeout: [:post, 'session/:session_id/timeouts'.freeze],

  #
  # element
  #

  describe_element: [:get, 'session/:session_id/element/:id'.freeze],
  find_child_element: [:post, 'session/:session_id/element/:id/element'.freeze],
  find_child_elements: [:post, 'session/:session_id/element/:id/elements'.freeze],
  click_element: [:post, 'session/:session_id/element/:id/click'.freeze],
  submit_element: [:post, 'session/:session_id/element/:id/submit'.freeze],
  get_element_value: [:get, 'session/:session_id/element/:id/value'.freeze],
  send_keys_to_element: [:post, 'session/:session_id/element/:id/value'.freeze],
  upload_file: [:post, 'session/:session_id/file'.freeze],
  get_element_tag_name: [:get, 'session/:session_id/element/:id/name'.freeze],
  clear_element: [:post, 'session/:session_id/element/:id/clear'.freeze],
  is_element_selected: [:get, 'session/:session_id/element/:id/selected'.freeze],
  is_element_enabled: [:get, 'session/:session_id/element/:id/enabled'.freeze],
  get_element_attribute: [:get, 'session/:session_id/element/:id/attribute/:name'.freeze],
  element_equals: [:get, 'session/:session_id/element/:id/equals/:other'.freeze],
  is_element_displayed: [:get, 'session/:session_id/element/:id/displayed'.freeze],
  get_element_location: [:get, 'session/:session_id/element/:id/location'.freeze],
  get_element_location_once_scrolled_into_view: [:get, 'session/:session_id/element/:id/location_in_view'.freeze],
  get_element_size: [:get, 'session/:session_id/element/:id/size'.freeze],
  drag_element: [:post, 'session/:session_id/element/:id/drag'.freeze],
  get_element_value_of_css_property: [:get, 'session/:session_id/element/:id/css/:property_name'.freeze],
  get_element_text: [:get, 'session/:session_id/element/:id/text'.freeze],

  #
  # rotatable
  #

  get_screen_orientation: [:get, 'session/:session_id/orientation'.freeze],
  set_screen_orientation: [:post, 'session/:session_id/orientation'.freeze],

  #
  # interactions API
  #

  click: [:post, 'session/:session_id/click'.freeze],
  double_click: [:post, 'session/:session_id/doubleclick'.freeze],
  mouse_down: [:post, 'session/:session_id/buttondown'.freeze],
  mouse_up: [:post, 'session/:session_id/buttonup'.freeze],
  mouse_move_to: [:post, 'session/:session_id/moveto'.freeze],
  send_modifier_key_to_active_element: [:post, 'session/:session_id/modifier'.freeze],
  send_keys_to_active_element: [:post, 'session/:session_id/keys'.freeze],

  #
  # html 5
  #

  execute_sql: [:post, 'session/:session_id/execute_sql'.freeze],

  get_location: [:get, 'session/:session_id/location'.freeze],
  set_location: [:post, 'session/:session_id/location'.freeze],

  get_app_cache: [:get, 'session/:session_id/application_cache'.freeze],
  get_app_cache_status: [:get, 'session/:session_id/application_cache/status'.freeze],
  clear_app_cache: [:delete, 'session/:session_id/application_cache/clear'.freeze],

  get_network_connection: [:get, 'session/:session_id/network_connection'.freeze],
  set_network_connection: [:post, 'session/:session_id/network_connection'.freeze],

  get_local_storage_item: [:get, 'session/:session_id/local_storage/key/:key'.freeze],
  remove_local_storage_item: [:delete, 'session/:session_id/local_storage/key/:key'.freeze],
  get_local_storage_keys: [:get, 'session/:session_id/local_storage'.freeze],
  set_local_storage_item: [:post, 'session/:session_id/local_storage'.freeze],
  clear_local_storage: [:delete, 'session/:session_id/local_storage'.freeze],
  get_local_storage_size: [:get, 'session/:session_id/local_storage/size'.freeze],

  get_session_storage_item: [:get, 'session/:session_id/session_storage/key/:key'.freeze],
  remove_session_storage_item: [:delete, 'session/:session_id/session_storage/key/:key'.freeze],
  get_session_storage_keys: [:get, 'session/:session_id/session_storage'.freeze],
  set_session_storage_item: [:post, 'session/:session_id/session_storage'.freeze],
  clear_session_storage: [:delete, 'session/:session_id/session_storage'.freeze],
  get_session_storage_size: [:get, 'session/:session_id/session_storage/size'.freeze],

  #
  # ime
  #

  ime_get_available_engines: [:get, 'session/:session_id/ime/available_engines'.freeze],
  ime_get_active_engine: [:get, 'session/:session_id/ime/active_engine'.freeze],
  ime_is_activated: [:get, 'session/:session_id/ime/activated'.freeze],
  ime_deactivate: [:post, 'session/:session_id/ime/deactivate'.freeze],
  ime_activate_engine: [:post, 'session/:session_id/ime/activate'.freeze],

  #
  # touch
  #

  touch_single_tap: [:post, 'session/:session_id/touch/click'.freeze],
  touch_double_tap: [:post, 'session/:session_id/touch/doubleclick'.freeze],
  touch_long_press: [:post, 'session/:session_id/touch/longclick'.freeze],
  touch_down: [:post, 'session/:session_id/touch/down'.freeze],
  touch_up: [:post, 'session/:session_id/touch/up'.freeze],
  touch_move: [:post, 'session/:session_id/touch/move'.freeze],
  touch_scroll: [:post, 'session/:session_id/touch/scroll'.freeze],
  touch_flick: [:post, 'session/:session_id/touch/flick'.freeze],

  #
  # logs
  #

  get_available_log_types: [:get, 'session/:session_id/log/types'.freeze],
  get_log: [:post, 'session/:session_id/log'.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



33
34
35
36
37
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 33

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



75
76
77
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 75

def accept_alert
  execute :accept_alert
end

#actionActionBuilder

Returns:

API:

  • public



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

def action
  ActionBuilder.new Mouse.new(self), Keyboard.new(self)
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



539
540
541
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 539

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



288
289
290
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 288

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



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

def alert=(keys)
  execute :set_alert_value, {}, {text: keys.to_s}
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



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

def alert_text
  execute :get_alert_text
end

#authentication(credentials) ⇒ 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



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

def authentication(credentials)
  execute :set_authentication, {}, credentials
end

#available_log_typesObject

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.

logs

API:

  • private



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

def available_log_types
  types = execute :get_available_log_types
  Array(types).map(&:to_sym)
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



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

def clear_element(element)
  execute :clear_element, 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



212
213
214
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 212

def clear_local_storage
  execute :clear_local_storage
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



236
237
238
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 236

def clear_session_storage
  execute :clear_session_storage
end

#clickObject

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



331
332
333
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 331

def click
  execute :click, {}, {button: 0}
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



327
328
329
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 327

def click_element(element)
  execute :click_element, 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



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

def close
  execute :close
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



43
44
45
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 43

def commands(command)
  COMMANDS[command]
end

#context_clickObject

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



339
340
341
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 339

def context_click
  execute :click, {}, {button: 2}
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



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

def cookies
  execute :get_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



300
301
302
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 300

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



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

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



39
40
41
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 39

def dialect
  :oss
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



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

def dismiss_alert
  execute :dismiss_alert
end

#double_clickObject

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



335
336
337
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 335

def double_click
  execute :double_click
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



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

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



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

def element_attribute(element, name)
  execute :get_element_attribute, id: element.ref, name: 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



527
528
529
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 527

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



519
520
521
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 519

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



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

def element_location(element)
  data = execute :get_element_location, 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



507
508
509
510
511
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 507

def element_location_once_scrolled_into_view(element)
  data = execute :get_element_location_once_scrolled_into_view, id: element

  Point.new data['x'], data['y']
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.

Backwards compatibility for w3c

API:

  • private



482
483
484
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 482

def element_property(element, name)
  execute_script 'return arguments[0][arguments[1]]', element, 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



500
501
502
503
504
505
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 500

def element_rect(element)
  loc = execute :get_element_location, id: element
  size = execute :get_element_size, id: element

  Rectangle.new loc['x'], loc['y'], size['width'], size['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



523
524
525
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 523

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



513
514
515
516
517
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 513

def element_size(element)
  data = execute :get_element_size, 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



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

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



490
491
492
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 490

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



486
487
488
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 486

def element_value(element)
  execute :get_element_value, id: element
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



531
532
533
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 531

def element_value_of_css_property(element, prop)
  execute :get_element_value_of_css_property, 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



273
274
275
276
277
278
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 273

def execute_async_script(script, *args)
  assert_javascript_enabled

  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



266
267
268
269
270
271
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 266

def execute_script(script, *args)
  assert_javascript_enabled

  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



545
546
547
548
549
550
551
552
553
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 545

def find_element_by(how, what, parent = nil)
  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



555
556
557
558
559
560
561
562
563
564
565
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 555

def find_elements_by(how, what, parent = nil)
  ids = if parent
          execute :find_child_elements, {id: parent}, {using: how, value: what}
        else
          execute :find_elements, {}, {using: how, value: what}
        end
  # see https://github.com/SeleniumHQ/selenium/issues/4555
  ids ||= []

  ids.map { |id| Element.new self, element_id_from(id) }
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



51
52
53
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 51

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/oss/bridge.rb', line 99

def go_back
  execute :go_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/oss/bridge.rb', line 103

def go_forward
  execute :go_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



59
60
61
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 59

def implicit_wait_timeout=(milliseconds)
  execute :implicitly_wait, {}, {ms: 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.

API:

  • private



322
323
324
325
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 322

def keyboard
  WebDriver.logger.deprecate 'Driver#keyboard', 'driver.action.<command>.perform'
  Keyboard.new self
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



196
197
198
199
200
201
202
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 196

def local_storage_item(key, value = nil)
  if value
    execute :set_local_storage_item, {}, {key: key, value: value}
  else
    execute :get_local_storage_item, key: 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



208
209
210
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 208

def local_storage_keys
  execute :get_local_storage_keys
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



216
217
218
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 216

def local_storage_size
  execute :get_local_storage_size
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.

API:

  • private



244
245
246
247
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 244

def location
  obj = execute(:get_location) || {}
  Location.new obj['latitude'], obj['longitude'], obj['altitude']
end

#log(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.

API:

  • private



457
458
459
460
461
462
463
464
465
466
467
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 457

def log(type)
  data = execute :get_log, {}, {type: type.to_s}

  Array(data).map do |l|
    begin
      LogEntry.new l.fetch('level', 'UNKNOWN'), l.fetch('timestamp'), l.fetch('message')
    rescue KeyError
      next
    end
  end
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



167
168
169
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 167

def maximize_window(handle = :current)
  execute :maximize_window, window_handle: handle
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.

API:

  • private



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

def mouse
  WebDriver.logger.deprecate 'Driver#mouse', 'driver.action.<command>.perform'
  Mouse.new self
end

#mouse_downObject

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



343
344
345
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 343

def mouse_down
  execute :mouse_down
end

#mouse_move_to(element, x = nil, y = 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



351
352
353
354
355
356
357
358
359
360
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 351

def mouse_move_to(element, x = nil, y = nil)
  params = {element: element}

  if x && y
    params[:xoffset] = x
    params[:yoffset] = y
  end

  execute :mouse_move_to, {}, params
end

#mouse_upObject

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



347
348
349
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 347

def mouse_up
  execute :mouse_up
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.

API:

  • private



254
255
256
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 254

def network_connection
  execute :get_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.

API:

  • private



258
259
260
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 258

def network_connection=(type)
  execute :set_network_connection, {}, {parameters: {type: type}}
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



284
285
286
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 284

def options
  @options ||= WebDriver::Options.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
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 115

def page_source
  execute :get_page_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



135
136
137
138
139
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 135

def quit
  execute :quit
  http.close
rescue *http.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



145
146
147
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 145

def refresh
  execute :refresh
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



204
205
206
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 204

def remove_local_storage_item(key)
  execute :remove_local_storage_item, key: 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



228
229
230
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 228

def remove_session_storage_item(key)
  execute :remove_session_storage_item, key: key
end

#reposition_window(x, y, 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



177
178
179
180
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 177

def reposition_window(x, y, handle = :current)
  execute :set_window_position, {window_handle: handle},
          {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



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

def resize_window(width, height, handle = :current)
  execute :set_window_size, {window_handle: handle},
          {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



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

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



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

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



188
189
190
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 188

def screenshot
  execute :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



63
64
65
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 63

def script_timeout=(milliseconds)
  execute :set_script_timeout, {}, {ms: milliseconds}
end

#send_keys_to_active_element(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



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

def send_keys_to_active_element(key)
  execute :send_keys_to_active_element, {}, {value: key}
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.

API:

  • private



366
367
368
369
370
371
372
373
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 366

def send_keys_to_element(element, keys)
  if @file_detector
    local_file = @file_detector.call(keys)
    keys = upload(local_file) if local_file
  end

  execute :send_keys_to_element, {id: element}, {value: Array(keys)}
end

#session_capabilitiesObject

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



55
56
57
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 55

def session_capabilities
  Capabilities.json_create execute(:get_capabilities)
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



220
221
222
223
224
225
226
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 220

def session_storage_item(key, value = nil)
  if value
    execute :set_session_storage_item, {}, {key: key, value: value}
  else
    execute :get_session_storage_item, key: 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



232
233
234
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 232

def session_storage_keys
  execute :get_session_storage_keys
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



240
241
242
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 240

def session_storage_size
  execute :get_session_storage_size
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.

API:

  • private



249
250
251
252
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 249

def set_location(lat, lon, alt)
  loc = {latitude: lat, longitude: lon, altitude: alt}
  execute :set_location, {}, {location: loc}
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



47
48
49
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 47

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



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

def submit_element(element)
  execute :submit_element, id: element
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



131
132
133
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 131

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



123
124
125
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 123

def switch_to_frame(id)
  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



127
128
129
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 127

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



119
120
121
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 119

def switch_to_window(name)
  execute :switch_to_window, {}, {name: 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



67
68
69
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 67

def timeout(type, milliseconds)
  execute :set_timeout, {}, {type: type, ms: 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/oss/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



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

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



407
408
409
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 407

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



433
434
435
436
437
438
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 433

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



429
430
431
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 429

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



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

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



415
416
417
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 415

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



419
420
421
422
423
424
425
426
427
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 419

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



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

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



411
412
413
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 411

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

#upload(local_file) ⇒ 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



375
376
377
378
379
380
381
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 375

def upload(local_file)
  unless File.file?(local_file)
    raise Error::WebDriverError, "you may only upload files: #{local_file.inspect}"
  end

  execute :upload_file, {}, {file: Zipper.zip_file(local_file)}
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/oss/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



157
158
159
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 157

def window_handle
  execute :get_current_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



153
154
155
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 153

def window_handles
  execute :get_window_handles
end

#window_position(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



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

def window_position(handle = :current)
  data = execute :get_window_position, window_handle: handle

  Point.new data['x'], data['y']
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



171
172
173
174
175
# File 'lib/selenium/webdriver/remote/oss/bridge.rb', line 171

def window_size(handle = :current)
  data = execute :get_window_size, window_handle: handle

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