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

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.



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

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

Instance Method Details

#accept_alertObject

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

alerts



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

def accept_alert
  execute :accept_alert
end

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

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

actions



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

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



505
506
507
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 505

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.



311
312
313
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 311

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.



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

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

#alert_textObject

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



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

def alert_text
  execute :get_alert_text
end

#clear_element(element) ⇒ Object

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



370
371
372
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 370

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.



241
242
243
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 241

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.



265
266
267
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 265

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.



359
360
361
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 359

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.



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

def close
  execute :close_window
end

#commands(command) ⇒ Object

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



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

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

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



319
320
321
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 319

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.



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

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.



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

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.



315
316
317
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 315

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.



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

def dialect
  :w3c
end

#dismiss_alertObject

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



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

def dismiss_alert
  execute :dismiss_alert
end

#drag_element(element, right_by, down_by) ⇒ Object

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



381
382
383
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 381

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.



446
447
448
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 446

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)


493
494
495
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 493

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)


485
486
487
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 485

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.



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

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.



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

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.



450
451
452
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 450

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.



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

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)


489
490
491
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 489

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.



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

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



442
443
444
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 442

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.



458
459
460
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 458

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.



454
455
456
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 454

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.



497
498
499
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 497

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.



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

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



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

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.



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

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.



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

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.



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

def full_screen_window
  execute :fullscreen_window
end

#get(url) ⇒ Object

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



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

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

#go_backObject

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

navigation



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

def go_back
  execute :back
end

#go_forwardObject

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



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

def go_forward
  execute :forward
end

#implicit_wait_timeout=(milliseconds) ⇒ Object

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



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

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

#keyboardObject

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



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

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



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

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.



237
238
239
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 237

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.



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

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.



273
274
275
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 273

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.



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

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

#minimize_windowObject

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



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

def minimize_window
  execute :minimize_window
end

#mouseObject

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



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

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.



281
282
283
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 281

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.



285
286
287
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 285

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



307
308
309
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 307

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.



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

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

#quitObject

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



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

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

#refreshObject

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



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

def refresh
  execute :refresh
end

#release_actionsObject

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



355
356
357
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 355

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.



233
234
235
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 233

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.



257
258
259
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 257

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.



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

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.



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

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



434
435
436
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 434

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.



430
431
432
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 430

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.



217
218
219
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 217

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.



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

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

#send_actions(data) ⇒ Object

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



351
352
353
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 351

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



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

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.



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

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.



261
262
263
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 261

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.



269
270
271
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 269

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.



277
278
279
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 277

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.



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

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.



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

def status
  execute :status
end

#submit_element(element) ⇒ Object

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



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

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.



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

def switch_to_default_content
  switch_to_frame nil
end

#switch_to_frame(id) ⇒ Object

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



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

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

#switch_to_parent_frameObject

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



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

def switch_to_parent_frame
  execute :switch_to_parent_frame
end

#switch_to_window(name) ⇒ Object

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



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

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

#timeout(type, milliseconds) ⇒ Object

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



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

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

#titleObject

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



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

def title
  execute :get_title
end

#touch_double_tap(element) ⇒ Object

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



389
390
391
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 389

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.



397
398
399
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 397

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.



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

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.



419
420
421
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 419

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.



393
394
395
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 393

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.



405
406
407
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 405

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.



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

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.



385
386
387
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 385

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.



401
402
403
# File 'lib/selenium/webdriver/remote/w3c/bridge.rb', line 401

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.



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

def url
  execute :get_current_url
end

#window_handleObject

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



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

def window_handle
  execute :get_window_handle
end

#window_handlesObject

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

window handling



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

def window_handles
  execute :get_window_handles
end

#window_positionObject

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



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

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

#window_rectObject

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



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

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.



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

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

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