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

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.

{
  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



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



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

def accept_alert
  execute :accept_alert
end

#actionActionBuilder

Returns:



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



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.



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.



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.



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.



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



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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:

  • (Boolean)


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:

  • (Boolean)


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.



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.



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



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.



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:

  • (Boolean)


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.



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



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.



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.



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.



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.



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



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.



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.



555
556
557
558
559
560
561
562
563
# 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

  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.



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



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.



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.



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.



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



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



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



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.



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.



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