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

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.

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

{

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

Constants inherited from Bridge

Bridge::PORT

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/w3c/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



77
78
79
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 77

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



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



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.



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.



85
86
87
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 85

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.



89
90
91
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 89

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.



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.



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.



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.



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.



144
145
146
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 144

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.



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

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.



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.



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.



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.



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.



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

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.



81
82
83
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 81

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.



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.



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:

  • (Boolean)


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:

  • (Boolean)


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.



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.



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.



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.



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:

  • (Boolean)


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.



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



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.



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.



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.



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.



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



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.



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.



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.



191
192
193
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 191

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.



56
57
58
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 56

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



97
98
99
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 97

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.



101
102
103
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 101

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.



60
61
62
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 60

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.



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



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.



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.



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.



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.



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

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.



180
181
182
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 180

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.



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.



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.



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



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.



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

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.



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

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.



148
149
150
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 148

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.



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.



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.



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.



195
196
197
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 195

def reposition_window(x, y)
  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.



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

def resize_window(width, height, handle = :current)
  unless handle == :current
    raise Error::WebDriverError, 'Switch to desired window before changing its size'
  end
  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.



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.



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.



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.



64
65
66
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 64

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.



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



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.



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.



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.



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.



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.



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

def set_window_rect(x: nil, y: nil, width: nil, height: nil)
  params = {x: x, y: y, width: width, height: height}
  params.update(params) { |k, v| Integer(v) unless v.nil? }
  execute :set_window_rect, {}, params
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.



52
53
54
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 52

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.



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.



132
133
134
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 132

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
126
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 123

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.



128
129
130
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 128

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/w3c/bridge.rb', line 119

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.



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

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.



109
110
111
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 109

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.



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.



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.



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.



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.



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.



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.



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.



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.



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.



105
106
107
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 105

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.



160
161
162
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 160

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



156
157
158
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 156

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.



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

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.



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.



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

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