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
- #command_list ⇒ 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
115 116 117 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 115 def accept_alert execute :accept_alert end |
#action(async: false, devices: [], duration: 250) ⇒ Object Also known as: actions
actions
374 375 376 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 374 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
502 503 504 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 502 def active_element Element.new self, element_id_from(execute(:get_active_element)) end |
#add_cookie(cookie) ⇒ Object
350 351 352 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 350 def () execute :add_cookie, {}, {cookie: } end |
#add_credential(credential, id) ⇒ Object
562 563 564 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 562 def add_credential(credential, id) execute :add_credential, {authenticatorId: id}, credential end |
#add_virtual_authenticator(options) ⇒ Object
virtual-authenticator
553 554 555 556 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 553 def add_virtual_authenticator() authenticator_id = execute :add_virtual_authenticator, {}, .as_json VirtualAuthenticator.new(self, authenticator_id, ) end |
#alert=(keys) ⇒ Object
123 124 125 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 123 def alert=(keys) execute :send_alert_text, {}, {value: keys.chars, text: keys} end |
#alert_text ⇒ Object
127 128 129 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 127 def alert_text execute :get_alert_text end |
#browser ⇒ Object
84 85 86 87 88 89 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 84 def browser @browser ||= begin name = @capabilities.browser_name name ? name.tr(' -', '_').downcase.to_sym : 'unknown' end end |
#clear_element(element) ⇒ Object
401 402 403 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 401 def clear_element(element) execute :element_clear, id: element end |
#clear_local_storage ⇒ Object
296 297 298 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 296 def clear_local_storage execute_script('localStorage.clear()') end |
#clear_session_storage ⇒ Object
320 321 322 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 320 def clear_session_storage execute_script('sessionStorage.clear()') end |
#click_element(element) ⇒ Object
391 392 393 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 391 def click_element(element) execute :element_click, id: element end |
#close ⇒ Object
195 196 197 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 195 def close execute :close_window end |
#command_list ⇒ Object
582 583 584 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 582 def command_list COMMANDS end |
#cookie(name) ⇒ Object
358 359 360 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 358 def (name) execute :get_cookie, name: name end |
#cookies ⇒ Object
362 363 364 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 362 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 73 74 |
# 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', 'chrome-headless-shell' extend(WebDriver::Chrome::Features) when 'firefox' extend(WebDriver::Firefox::Features) when 'msedge', 'MicrosoftEdge' extend(WebDriver::Edge::Features) when 'Safari', 'Safari Technology Preview' extend(WebDriver::Safari::Features) when 'internet explorer' extend(WebDriver::IE::Features) end end |
#credentials(authenticator_id) ⇒ Object
566 567 568 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 566 def credentials(authenticator_id) execute :get_credentials, {authenticatorId: authenticator_id} end |
#delete_all_cookies ⇒ Object
366 367 368 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 366 def execute :delete_all_cookies end |
#delete_cookie(name) ⇒ Object
354 355 356 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 354 def (name) execute :delete_cookie, name: name end |
#dismiss_alert ⇒ Object
119 120 121 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 119 def dismiss_alert execute :dismiss_alert end |
#element_aria_label(element) ⇒ Object
446 447 448 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 446 def element_aria_label(element) execute :get_element_aria_label, id: element end |
#element_aria_role(element) ⇒ Object
442 443 444 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 442 def element_aria_role(element) execute :get_element_aria_role, id: element end |
#element_attribute(element, name) ⇒ Object
429 430 431 432 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 429 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
489 490 491 492 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 489 def element_displayed?(element) WebDriver.logger.debug 'Using script for :isDisplayed', id: :script execute_atom :isDisplayed, element end |
#element_dom_attribute(element, name) ⇒ Object
434 435 436 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 434 def element_dom_attribute(element, name) execute :get_element_attribute, id: element, name: name end |
#element_enabled?(element) ⇒ Boolean
481 482 483 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 481 def element_enabled?(element) execute :is_element_enabled, id: element end |
#element_location(element) ⇒ Object
458 459 460 461 462 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 458 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
470 471 472 473 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 470 def element_location_once_scrolled_into_view(element) send_keys_to_element(element, ['']) element_location(element) end |
#element_property(element, name) ⇒ Object
438 439 440 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 438 def element_property(element, name) execute :get_element_property, id: element, name: name end |
#element_rect(element) ⇒ Object
464 465 466 467 468 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 464 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
272 273 274 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 272 def element_screenshot(element) execute :take_element_screenshot, id: element end |
#element_selected?(element) ⇒ Boolean
485 486 487 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 485 def element_selected?(element) execute :is_element_selected, id: element end |
#element_size(element) ⇒ Object
475 476 477 478 479 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 475 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
425 426 427 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 425 def element_tag_name(element) execute :get_element_tag_name, id: element end |
#element_text(element) ⇒ Object
454 455 456 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 454 def element_text(element) execute :get_element_text, id: element end |
#element_value(element) ⇒ Object
450 451 452 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 450 def element_value(element) element_property element, 'value' end |
#element_value_of_css_property(element, prop) ⇒ Object
494 495 496 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 494 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
337 338 339 340 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 337 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
332 333 334 335 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 332 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
508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 508 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
526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 526 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
244 245 246 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 244 def full_screen_window execute :fullscreen_window end |
#get(url) ⇒ Object
95 96 97 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 95 def get(url) execute :get, {}, {url: url} end |
#go_back ⇒ Object
navigation
135 136 137 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 135 def go_back execute :back end |
#go_forward ⇒ Object
139 140 141 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 139 def go_forward execute :forward end |
#local_storage_item(key, value = nil) ⇒ Object
HTML 5
280 281 282 283 284 285 286 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 280 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
292 293 294 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 292 def local_storage_keys execute_script('return Object.keys(localStorage)') end |
#local_storage_size ⇒ Object
300 301 302 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 300 def local_storage_size execute_script('return localStorage.length') end |
#manage ⇒ Object
cookies
346 347 348 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 346 def manage @manage ||= WebDriver::Manager.new(self) end |
#maximize_window(handle = :current) ⇒ Object
235 236 237 238 239 240 241 242 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 235 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
231 232 233 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 231 def minimize_window execute :minimize_window end |
#new_window(type) ⇒ Hash
Create a new top-level browsing context w3c.github.io/webdriver/#new-window
165 166 167 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 165 def new_window(type) execute :new_window, {}, {type: type} end |
#page_source ⇒ Object
151 152 153 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 151 def page_source execute :get_page_source end |
#print_page(options = {}) ⇒ Object
387 388 389 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 387 def print_page( = {}) execute :print_page, {}, {options: } end |
#quit ⇒ Object
188 189 190 191 192 193 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 188 def quit execute :delete_session http.close rescue *QUIT_ERRORS nil end |
#refresh ⇒ Object
199 200 201 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 199 def refresh execute :refresh end |
#release_actions ⇒ Object
383 384 385 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 383 def release_actions execute :release_actions end |
#remove_all_credentials(authenticator_id) ⇒ Object
574 575 576 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 574 def remove_all_credentials(authenticator_id) execute :remove_all_credentials, {authenticatorId: authenticator_id} end |
#remove_credential(credential_id, authenticator_id) ⇒ Object
570 571 572 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 570 def remove_credential(credential_id, authenticator_id) execute :remove_credential, {credentialId: credential_id, authenticatorId: authenticator_id} end |
#remove_local_storage_item(key) ⇒ Object
288 289 290 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 288 def remove_local_storage_item(key) execute_script("localStorage.removeItem('#{key}')") end |
#remove_session_storage_item(key) ⇒ Object
312 313 314 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 312 def remove_session_storage_item(key) execute_script("sessionStorage.removeItem('#{key}')") end |
#remove_virtual_authenticator(id) ⇒ Object
558 559 560 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 558 def remove_virtual_authenticator(id) execute :remove_virtual_authenticator, {authenticatorId: id} end |
#reposition_window(x, y) ⇒ Object
248 249 250 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 248 def reposition_window(x, y) set_window_rect(x: x, y: y) end |
#resize_window(width, height, handle = :current) ⇒ Object
215 216 217 218 219 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 215 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
268 269 270 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 268 def screenshot execute :take_screenshot end |
#send_actions(data) ⇒ Object
379 380 381 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 379 def send_actions(data) execute :actions, {}, {actions: data} end |
#send_keys_to_element(element, keys) ⇒ Object
395 396 397 398 399 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 395 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.
80 81 82 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 80 def session_id @session_id || raise(Error::WebDriverError, 'no current session exists') end |
#session_storage_item(key, value = nil) ⇒ Object
304 305 306 307 308 309 310 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 304 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
316 317 318 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 316 def session_storage_keys execute_script('return Object.keys(sessionStorage)') end |
#session_storage_size ⇒ Object
324 325 326 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 324 def session_storage_size execute_script('return sessionStorage.length') end |
#set_window_rect(x: nil, y: nil, width: nil, height: nil) ⇒ Object
257 258 259 260 261 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 257 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
544 545 546 547 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 544 def shadow_root(element) id = execute :get_element_shadow_root, id: element ShadowRoot.new self, shadow_root_id_from(id) end |
#status ⇒ Object
91 92 93 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 91 def status execute :status end |
#submit_element(element) ⇒ Object
405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 405 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
182 183 184 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 182 def switch_to_default_content switch_to_frame nil end |
#switch_to_frame(id) ⇒ Object
173 174 175 176 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 173 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
178 179 180 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 178 def switch_to_parent_frame execute :switch_to_parent_frame end |
#switch_to_window(name) ⇒ Object
169 170 171 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 169 def switch_to_window(name) execute :switch_to_window, {}, {handle: name} end |
#timeouts ⇒ Object
timeouts
103 104 105 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 103 def timeouts execute :get_timeouts, {} end |
#timeouts=(timeouts) ⇒ Object
107 108 109 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 107 def timeouts=(timeouts) execute :set_timeout, {}, timeouts end |
#title ⇒ Object
147 148 149 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 147 def title execute :get_title end |
#url ⇒ Object
143 144 145 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 143 def url execute :get_current_url end |
#user_verified(verified, authenticator_id) ⇒ Object
578 579 580 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 578 def user_verified(verified, authenticator_id) execute :set_user_verified, {authenticatorId: authenticator_id}, {isUserVerified: verified} end |
#window_handle ⇒ Object
211 212 213 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 211 def window_handle execute :get_window_handle end |
#window_handles ⇒ Object
window handling
207 208 209 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 207 def window_handles execute :get_window_handles end |
#window_position ⇒ Object
252 253 254 255 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 252 def window_position data = execute :get_window_rect Point.new data['x'], data['y'] end |
#window_rect ⇒ Object
263 264 265 266 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 263 def window_rect data = execute :get_window_rect Rectangle.new data['x'], data['y'], data['width'], data['height'] end |
#window_size(handle = :current) ⇒ Object
221 222 223 224 225 226 227 228 229 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 221 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 |