Class: Selenium::WebDriver::Remote::Bridge Private
- Inherits:
-
Object
- Object
- Selenium::WebDriver::Remote::Bridge
- Includes:
- Atoms
- Defined in:
- lib/selenium/webdriver/remote/bridge/commands.rb,
lib/selenium/webdriver/remote/bridge.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.
Constant Summary collapse
- PORT =
4444
- QUIT_ERRORS =
[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.
{ status: [:get, 'status'], # # session handling # new_session: [:post, 'session'], delete_session: [:delete, 'session/:session_id'], # # basic driver # get: [:post, 'session/:session_id/url'], get_current_url: [:get, 'session/:session_id/url'], back: [:post, 'session/:session_id/back'], forward: [:post, 'session/:session_id/forward'], refresh: [:post, 'session/:session_id/refresh'], get_title: [:get, 'session/:session_id/title'], # # window and Frame handling # get_window_handle: [:get, 'session/:session_id/window'], new_window: [:post, 'session/:session_id/window/new'], close_window: [:delete, 'session/:session_id/window'], switch_to_window: [:post, 'session/:session_id/window'], get_window_handles: [:get, 'session/:session_id/window/handles'], fullscreen_window: [:post, 'session/:session_id/window/fullscreen'], minimize_window: [:post, 'session/:session_id/window/minimize'], maximize_window: [:post, 'session/:session_id/window/maximize'], set_window_rect: [:post, 'session/:session_id/window/rect'], get_window_rect: [:get, 'session/:session_id/window/rect'], switch_to_frame: [:post, 'session/:session_id/frame'], switch_to_parent_frame: [:post, 'session/:session_id/frame/parent'], # # element # find_element: [:post, 'session/:session_id/element'], find_elements: [:post, 'session/:session_id/elements'], find_child_element: [:post, 'session/:session_id/element/:id/element'], find_child_elements: [:post, 'session/:session_id/element/:id/elements'], find_shadow_child_element: [:post, 'session/:session_id/shadow/:id/element'], find_shadow_child_elements: [:post, 'session/:session_id/shadow/:id/elements'], get_active_element: [:get, 'session/:session_id/element/active'], get_element_shadow_root: [:get, 'session/:session_id/element/:id/shadow'], is_element_selected: [:get, 'session/:session_id/element/:id/selected'], get_element_attribute: [:get, 'session/:session_id/element/:id/attribute/:name'], get_element_property: [:get, 'session/:session_id/element/:id/property/:name'], get_element_css_value: [:get, 'session/:session_id/element/:id/css/:property_name'], get_element_aria_role: [:get, 'session/:session_id/element/:id/computedrole'], get_element_aria_label: [:get, 'session/:session_id/element/:id/computedlabel'], get_element_text: [:get, 'session/:session_id/element/:id/text'], get_element_tag_name: [:get, 'session/:session_id/element/:id/name'], get_element_rect: [:get, 'session/:session_id/element/:id/rect'], is_element_enabled: [:get, 'session/:session_id/element/:id/enabled'], # # document handling # get_page_source: [:get, 'session/:session_id/source'], execute_script: [:post, 'session/:session_id/execute/sync'], execute_async_script: [:post, 'session/:session_id/execute/async'], # # cookies # get_all_cookies: [:get, 'session/:session_id/cookie'], get_cookie: [:get, 'session/:session_id/cookie/:name'], add_cookie: [:post, 'session/:session_id/cookie'], delete_cookie: [:delete, 'session/:session_id/cookie/:name'], delete_all_cookies: [:delete, 'session/:session_id/cookie'], # # timeouts # get_timeouts: [:get, 'session/:session_id/timeouts'], set_timeout: [:post, 'session/:session_id/timeouts'], # # actions # actions: [:post, 'session/:session_id/actions'], release_actions: [:delete, 'session/:session_id/actions'], print_page: [:post, 'session/:session_id/print'], # # Element Operations # element_click: [:post, 'session/:session_id/element/:id/click'], element_clear: [:post, 'session/:session_id/element/:id/clear'], element_send_keys: [:post, 'session/:session_id/element/:id/value'], # # alerts # dismiss_alert: [:post, 'session/:session_id/alert/dismiss'], accept_alert: [:post, 'session/:session_id/alert/accept'], get_alert_text: [:get, 'session/:session_id/alert/text'], send_alert_text: [:post, 'session/:session_id/alert/text'], # # screenshot # take_screenshot: [:get, 'session/:session_id/screenshot'], take_element_screenshot: [:get, 'session/:session_id/element/:id/screenshot'], # # virtual-authenticator # add_virtual_authenticator: [:post, 'session/:session_id/webauthn/authenticator'], remove_virtual_authenticator: [:delete, 'session/:session_id/webauthn/authenticator/:authenticatorId'], add_credential: [:post, 'session/:session_id/webauthn/authenticator/:authenticatorId/credential'], get_credentials: [:get, 'session/:session_id/webauthn/authenticator/:authenticatorId/credentials'], remove_credential: [:delete, 'session/:session_id/webauthn/authenticator/:authenticatorId/credentials/:credentialId'], remove_all_credentials: [:delete, 'session/:session_id/webauthn/authenticator/:authenticatorId/credentials'], set_user_verified: [:post, 'session/:session_id/webauthn/authenticator/:authenticatorId/uv'] }.freeze
Instance Attribute Summary collapse
-
#capabilities ⇒ Object
readonly
Returns the value of attribute capabilities.
-
#file_detector ⇒ Object
Returns the value of attribute file_detector.
-
#http ⇒ Object
Returns the value of attribute http.
Instance Method Summary collapse
-
#accept_alert ⇒ Object
alerts.
-
#action(async: false, devices: [], duration: 250) ⇒ Object
(also: #actions)
actions.
-
#active_element ⇒ Object
(also: #switch_to_active_element)
finding elements.
- #add_cookie(cookie) ⇒ Object
- #add_credential(credential, id) ⇒ Object
-
#add_virtual_authenticator(options) ⇒ Object
virtual-authenticator.
- #alert=(keys) ⇒ Object
- #alert_text ⇒ Object
- #browser ⇒ Object
- #clear_element(element) ⇒ Object
- #clear_local_storage ⇒ Object
- #clear_session_storage ⇒ Object
- #click_element(element) ⇒ Object
- #close ⇒ Object
- #cookie(name) ⇒ Object
- #cookies ⇒ Object
-
#create_session(capabilities) ⇒ Object
Creates session.
- #credentials(authenticator_id) ⇒ Object
- #delete_all_cookies ⇒ Object
- #delete_cookie(name) ⇒ Object
- #dismiss_alert ⇒ Object
- #element_aria_label(element) ⇒ Object
- #element_aria_role(element) ⇒ Object
- #element_attribute(element, name) ⇒ Object
- #element_displayed?(element) ⇒ Boolean
- #element_dom_attribute(element, name) ⇒ Object
- #element_enabled?(element) ⇒ Boolean
- #element_location(element) ⇒ Object
- #element_location_once_scrolled_into_view(element) ⇒ Object
- #element_property(element, name) ⇒ Object
- #element_rect(element) ⇒ Object
- #element_screenshot(element) ⇒ Object
- #element_selected?(element) ⇒ Boolean
- #element_size(element) ⇒ Object
-
#element_tag_name(element) ⇒ Object
element properties.
- #element_text(element) ⇒ Object
- #element_value(element) ⇒ Object
- #element_value_of_css_property(element, prop) ⇒ Object
- #execute_async_script(script, *args) ⇒ Object
-
#execute_script(script, *args) ⇒ Object
javascript execution.
- #find_element_by(how, what, parent_ref = []) ⇒ Object
- #find_elements_by(how, what, parent_ref = []) ⇒ Object
- #full_screen_window ⇒ Object
- #get(url) ⇒ Object
-
#go_back ⇒ Object
navigation.
- #go_forward ⇒ Object
-
#initialize(url:, http_client: nil) ⇒ Bridge
constructor
private
Initializes the bridge with the given server URL.
-
#local_storage_item(key, value = nil) ⇒ Object
HTML 5.
- #local_storage_keys ⇒ Object
- #local_storage_size ⇒ Object
-
#manage ⇒ Object
cookies.
- #maximize_window(handle = :current) ⇒ Object
- #minimize_window ⇒ Object
-
#new_window(type) ⇒ Hash
Create a new top-level browsing context w3c.github.io/webdriver/#new-window.
- #page_source ⇒ Object
- #print_page(options = {}) ⇒ Object
- #quit ⇒ Object
- #refresh ⇒ Object
- #release_actions ⇒ Object
- #remove_all_credentials(authenticator_id) ⇒ Object
- #remove_credential(credential_id, authenticator_id) ⇒ Object
- #remove_local_storage_item(key) ⇒ Object
- #remove_session_storage_item(key) ⇒ Object
- #remove_virtual_authenticator(id) ⇒ Object
- #reposition_window(x, y) ⇒ Object
- #resize_window(width, height, handle = :current) ⇒ Object
- #screenshot ⇒ Object
- #send_actions(data) ⇒ Object
- #send_keys_to_element(element, keys) ⇒ Object
-
#session_id ⇒ Object
Returns the current session ID.
- #session_storage_item(key, value = nil) ⇒ Object
- #session_storage_keys ⇒ Object
- #session_storage_size ⇒ Object
- #set_window_rect(x: nil, y: nil, width: nil, height: nil) ⇒ Object
- #shadow_root(element) ⇒ Object
- #status ⇒ Object
- #submit_element(element) ⇒ Object
- #switch_to_default_content ⇒ Object
- #switch_to_frame(id) ⇒ Object
- #switch_to_parent_frame ⇒ Object
- #switch_to_window(name) ⇒ Object
-
#timeouts ⇒ Object
timeouts.
- #timeouts=(timeouts) ⇒ Object
- #title ⇒ Object
- #url ⇒ Object
- #user_verified(verified, authenticator_id) ⇒ Object
- #window_handle ⇒ Object
-
#window_handles ⇒ Object
window handling.
- #window_position ⇒ Object
- #window_rect ⇒ Object
- #window_size(handle = :current) ⇒ Object
Methods included from Atoms
Constructor Details
#initialize(url:, http_client: nil) ⇒ 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.
Initializes the bridge with the given server URL
39 40 41 42 43 44 45 46 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 39 def initialize(url:, http_client: nil) uri = url.is_a?(URI) ? url : URI.parse(url) uri.path += '/' unless uri.path.end_with?('/') @http = http_client || Http::Default.new @http.server_url = uri @file_detector = nil end |
Instance Attribute Details
#capabilities ⇒ Object (readonly)
Returns the value of attribute capabilities.
30 31 32 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 30 def capabilities @capabilities end |
#file_detector ⇒ Object
Returns the value of attribute file_detector.
29 30 31 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 29 def file_detector @file_detector end |
#http ⇒ Object
Returns the value of attribute http.
29 30 31 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 29 def http @http end |
Instance Method Details
#accept_alert ⇒ Object
alerts
113 114 115 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 113 def accept_alert execute :accept_alert end |
#action(async: false, devices: [], duration: 250) ⇒ Object Also known as: actions
actions
372 373 374 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 372 def action(async: false, devices: [], duration: 250) ActionBuilder.new self, async: async, devices: devices, duration: duration end |
#active_element ⇒ Object Also known as: switch_to_active_element
finding elements
500 501 502 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 500 def active_element Element.new self, element_id_from(execute(:get_active_element)) end |
#add_cookie(cookie) ⇒ Object
348 349 350 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 348 def () execute :add_cookie, {}, {cookie: } end |
#add_credential(credential, id) ⇒ Object
560 561 562 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 560 def add_credential(credential, id) execute :add_credential, {authenticatorId: id}, credential end |
#add_virtual_authenticator(options) ⇒ Object
virtual-authenticator
551 552 553 554 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 551 def add_virtual_authenticator() authenticator_id = execute :add_virtual_authenticator, {}, .as_json VirtualAuthenticator.new(self, authenticator_id, ) end |
#alert=(keys) ⇒ Object
121 122 123 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 121 def alert=(keys) execute :send_alert_text, {}, {value: keys.chars, text: keys} end |
#alert_text ⇒ Object
125 126 127 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 125 def alert_text execute :get_alert_text end |
#browser ⇒ Object
82 83 84 85 86 87 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 82 def browser @browser ||= begin name = @capabilities.browser_name name ? name.tr(' ', '_').downcase.to_sym : 'unknown' end end |
#clear_element(element) ⇒ Object
399 400 401 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 399 def clear_element(element) execute :element_clear, id: element end |
#clear_local_storage ⇒ Object
294 295 296 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 294 def clear_local_storage execute_script('localStorage.clear()') end |
#clear_session_storage ⇒ Object
318 319 320 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 318 def clear_session_storage execute_script('sessionStorage.clear()') end |
#click_element(element) ⇒ Object
389 390 391 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 389 def click_element(element) execute :element_click, id: element end |
#close ⇒ Object
193 194 195 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 193 def close execute :close_window end |
#cookie(name) ⇒ Object
356 357 358 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 356 def (name) execute :get_cookie, name: name end |
#cookies ⇒ Object
360 361 362 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 360 def execute :get_all_cookies end |
#create_session(capabilities) ⇒ Object
Creates session.
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 52 def create_session(capabilities) response = execute(:new_session, {}, prepare_capabilities_payload(capabilities)) @session_id = response['sessionId'] capabilities = response['capabilities'] raise Error::WebDriverError, 'no sessionId in returned payload' unless @session_id @capabilities = Capabilities.json_create(capabilities) case @capabilities[:browser_name] when 'chrome' extend(WebDriver::Chrome::Features) when 'firefox' extend(WebDriver::Firefox::Features) when 'msedge' extend(WebDriver::Edge::Features) when 'Safari', 'Safari Technology Preview' extend(WebDriver::Safari::Features) end end |
#credentials(authenticator_id) ⇒ Object
564 565 566 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 564 def credentials(authenticator_id) execute :get_credentials, {authenticatorId: authenticator_id} end |
#delete_all_cookies ⇒ Object
364 365 366 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 364 def execute :delete_all_cookies end |
#delete_cookie(name) ⇒ Object
352 353 354 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 352 def (name) execute :delete_cookie, name: name end |
#dismiss_alert ⇒ Object
117 118 119 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 117 def dismiss_alert execute :dismiss_alert end |
#element_aria_label(element) ⇒ Object
444 445 446 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 444 def element_aria_label(element) execute :get_element_aria_label, id: element end |
#element_aria_role(element) ⇒ Object
440 441 442 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 440 def element_aria_role(element) execute :get_element_aria_role, id: element end |
#element_attribute(element, name) ⇒ Object
427 428 429 430 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 427 def element_attribute(element, name) WebDriver.logger.debug "Using script for :getAttribute of #{name}", id: :script execute_atom :getAttribute, element, name end |
#element_displayed?(element) ⇒ Boolean
487 488 489 490 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 487 def element_displayed?(element) WebDriver.logger.debug 'Using script for :isDisplayed', id: :script execute_atom :isDisplayed, element end |
#element_dom_attribute(element, name) ⇒ Object
432 433 434 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 432 def element_dom_attribute(element, name) execute :get_element_attribute, id: element, name: name end |
#element_enabled?(element) ⇒ Boolean
479 480 481 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 479 def element_enabled?(element) execute :is_element_enabled, id: element end |
#element_location(element) ⇒ Object
456 457 458 459 460 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 456 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
468 469 470 471 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 468 def element_location_once_scrolled_into_view(element) send_keys_to_element(element, ['']) element_location(element) end |
#element_property(element, name) ⇒ Object
436 437 438 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 436 def element_property(element, name) execute :get_element_property, id: element, name: name end |
#element_rect(element) ⇒ Object
462 463 464 465 466 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 462 def element_rect(element) data = execute :get_element_rect, id: element Rectangle.new data['x'], data['y'], data['width'], data['height'] end |
#element_screenshot(element) ⇒ Object
270 271 272 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 270 def element_screenshot(element) execute :take_element_screenshot, id: element end |
#element_selected?(element) ⇒ Boolean
483 484 485 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 483 def element_selected?(element) execute :is_element_selected, id: element end |
#element_size(element) ⇒ Object
473 474 475 476 477 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 473 def element_size(element) data = execute :get_element_rect, id: element Dimension.new data['width'], data['height'] end |
#element_tag_name(element) ⇒ Object
element properties
423 424 425 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 423 def element_tag_name(element) execute :get_element_tag_name, id: element end |
#element_text(element) ⇒ Object
452 453 454 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 452 def element_text(element) execute :get_element_text, id: element end |
#element_value(element) ⇒ Object
448 449 450 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 448 def element_value(element) element_property element, 'value' end |
#element_value_of_css_property(element, prop) ⇒ Object
492 493 494 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 492 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
335 336 337 338 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 335 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
javascript execution
330 331 332 333 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 330 def execute_script(script, *args) result = execute :execute_script, {}, {script: script, args: args} unwrap_script_result result end |
#find_element_by(how, what, parent_ref = []) ⇒ Object
506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 506 def find_element_by(how, what, parent_ref = []) how, what = convert_locator(how, what) return execute_atom(:findElements, Support::RelativeLocator.new(what).as_json).first if how == 'relative' parent_type, parent_id = parent_ref id = case parent_type when :element execute :find_child_element, {id: parent_id}, {using: how, value: what.to_s} when :shadow_root execute :find_shadow_child_element, {id: parent_id}, {using: how, value: what.to_s} else execute :find_element, {}, {using: how, value: what.to_s} end Element.new self, element_id_from(id) end |
#find_elements_by(how, what, parent_ref = []) ⇒ Object
524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 524 def find_elements_by(how, what, parent_ref = []) how, what = convert_locator(how, what) return execute_atom :findElements, Support::RelativeLocator.new(what).as_json if how == 'relative' parent_type, parent_id = parent_ref ids = case parent_type when :element execute :find_child_elements, {id: parent_id}, {using: how, value: what.to_s} when :shadow_root execute :find_shadow_child_elements, {id: parent_id}, {using: how, value: what.to_s} else execute :find_elements, {}, {using: how, value: what.to_s} end ids.map { |id| Element.new self, element_id_from(id) } end |
#full_screen_window ⇒ Object
242 243 244 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 242 def full_screen_window execute :fullscreen_window end |
#get(url) ⇒ Object
93 94 95 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 93 def get(url) execute :get, {}, {url: url} end |
#go_back ⇒ Object
navigation
133 134 135 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 133 def go_back execute :back end |
#go_forward ⇒ Object
137 138 139 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 137 def go_forward execute :forward end |
#local_storage_item(key, value = nil) ⇒ Object
HTML 5
278 279 280 281 282 283 284 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 278 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_keys ⇒ Object
290 291 292 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 290 def local_storage_keys execute_script('return Object.keys(localStorage)') end |
#local_storage_size ⇒ Object
298 299 300 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 298 def local_storage_size execute_script('return localStorage.length') end |
#manage ⇒ Object
cookies
344 345 346 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 344 def manage @manage ||= WebDriver::Manager.new(self) end |
#maximize_window(handle = :current) ⇒ Object
233 234 235 236 237 238 239 240 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 233 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_window ⇒ Object
229 230 231 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 229 def minimize_window execute :minimize_window end |
#new_window(type) ⇒ Hash
Create a new top-level browsing context w3c.github.io/webdriver/#new-window
163 164 165 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 163 def new_window(type) execute :new_window, {}, {type: type} end |
#page_source ⇒ Object
149 150 151 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 149 def page_source execute :get_page_source end |
#print_page(options = {}) ⇒ Object
385 386 387 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 385 def print_page( = {}) execute :print_page, {}, {options: } end |
#quit ⇒ Object
186 187 188 189 190 191 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 186 def quit execute :delete_session http.close rescue *QUIT_ERRORS nil end |
#refresh ⇒ Object
197 198 199 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 197 def refresh execute :refresh end |
#release_actions ⇒ Object
381 382 383 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 381 def release_actions execute :release_actions end |
#remove_all_credentials(authenticator_id) ⇒ Object
572 573 574 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 572 def remove_all_credentials(authenticator_id) execute :remove_all_credentials, {authenticatorId: authenticator_id} end |
#remove_credential(credential_id, authenticator_id) ⇒ Object
568 569 570 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 568 def remove_credential(credential_id, authenticator_id) execute :remove_credential, {credentialId: credential_id, authenticatorId: authenticator_id} end |
#remove_local_storage_item(key) ⇒ Object
286 287 288 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 286 def remove_local_storage_item(key) execute_script("localStorage.removeItem('#{key}')") end |
#remove_session_storage_item(key) ⇒ Object
310 311 312 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 310 def remove_session_storage_item(key) execute_script("sessionStorage.removeItem('#{key}')") end |
#remove_virtual_authenticator(id) ⇒ Object
556 557 558 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 556 def remove_virtual_authenticator(id) execute :remove_virtual_authenticator, {authenticatorId: id} end |
#reposition_window(x, y) ⇒ Object
246 247 248 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 246 def reposition_window(x, y) set_window_rect(x: x, y: y) end |
#resize_window(width, height, handle = :current) ⇒ Object
213 214 215 216 217 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 213 def resize_window(width, height, handle = :current) raise Error::WebDriverError, 'Switch to desired window before changing its size' unless handle == :current set_window_rect(width: width, height: height) end |
#screenshot ⇒ Object
266 267 268 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 266 def screenshot execute :take_screenshot end |
#send_actions(data) ⇒ Object
377 378 379 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 377 def send_actions(data) execute :actions, {}, {actions: data} end |
#send_keys_to_element(element, keys) ⇒ Object
393 394 395 396 397 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 393 def send_keys_to_element(element, keys) keys = upload_if_necessary(keys) if @file_detector text = keys.join execute :element_send_keys, {id: element}, {value: text.chars, text: text} end |
#session_id ⇒ Object
Returns the current session ID.
78 79 80 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 78 def session_id @session_id || raise(Error::WebDriverError, 'no current session exists') end |
#session_storage_item(key, value = nil) ⇒ Object
302 303 304 305 306 307 308 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 302 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_keys ⇒ Object
314 315 316 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 314 def session_storage_keys execute_script('return Object.keys(sessionStorage)') end |
#session_storage_size ⇒ Object
322 323 324 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 322 def session_storage_size execute_script('return sessionStorage.length') end |
#set_window_rect(x: nil, y: nil, width: nil, height: nil) ⇒ Object
255 256 257 258 259 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 255 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 |
#shadow_root(element) ⇒ Object
542 543 544 545 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 542 def shadow_root(element) id = execute :get_element_shadow_root, id: element ShadowRoot.new self, shadow_root_id_from(id) end |
#status ⇒ Object
89 90 91 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 89 def status execute :status end |
#submit_element(element) ⇒ Object
403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 403 def submit_element(element) script = "/* submitForm */ var form = arguments[0];\n" \ "while (form.nodeName != \"FORM\" && form.parentNode) {\n " \ "form = form.parentNode;\n" \ "}\n" \ "if (!form) { throw Error('Unable to find containing form element'); }\n" \ "if (!form.ownerDocument) { throw Error('Unable to find owning document'); }\n" \ "var e = form.ownerDocument.createEvent('Event');\n" \ "e.initEvent('submit', true, true);\n" \ "if (form.dispatchEvent(e)) { HTMLFormElement.prototype.submit.call(form) }\n" execute_script(script, Element::ELEMENT_KEY => element) rescue Error::JavascriptError raise Error::UnsupportedOperationError, 'To submit an element, it must be nested inside a form element' end |
#switch_to_default_content ⇒ Object
180 181 182 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 180 def switch_to_default_content switch_to_frame nil end |
#switch_to_frame(id) ⇒ Object
171 172 173 174 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 171 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_frame ⇒ Object
176 177 178 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 176 def switch_to_parent_frame execute :switch_to_parent_frame end |
#switch_to_window(name) ⇒ Object
167 168 169 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 167 def switch_to_window(name) execute :switch_to_window, {}, {handle: name} end |
#timeouts ⇒ Object
timeouts
101 102 103 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 101 def timeouts execute :get_timeouts, {} end |
#timeouts=(timeouts) ⇒ Object
105 106 107 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 105 def timeouts=(timeouts) execute :set_timeout, {}, timeouts end |
#title ⇒ Object
145 146 147 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 145 def title execute :get_title end |
#url ⇒ Object
141 142 143 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 141 def url execute :get_current_url end |
#user_verified(verified, authenticator_id) ⇒ Object
576 577 578 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 576 def user_verified(verified, authenticator_id) execute :set_user_verified, {authenticatorId: authenticator_id}, {isUserVerified: verified} end |
#window_handle ⇒ Object
209 210 211 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 209 def window_handle execute :get_window_handle end |
#window_handles ⇒ Object
window handling
205 206 207 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 205 def window_handles execute :get_window_handles end |
#window_position ⇒ Object
250 251 252 253 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 250 def window_position data = execute :get_window_rect Point.new data['x'], data['y'] end |
#window_rect ⇒ Object
261 262 263 264 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 261 def window_rect data = execute :get_window_rect Rectangle.new data['x'], data['y'], data['width'], data['height'] end |
#window_size(handle = :current) ⇒ Object
219 220 221 222 223 224 225 226 227 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 219 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 |