Class: Selenium::WebDriver::Remote::Bridge Private
- Inherits:
-
Object
- Object
- Selenium::WebDriver::Remote::Bridge
- Includes:
- BridgeHelper
- Defined in:
- lib/selenium/webdriver/remote/bridge.rb,
lib/selenium/webdriver/remote/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.
Low level bridge to the remote server, through which the rest of the API works.
Direct Known Subclasses
Chrome::Bridge, Firefox::Bridge, IE::Bridge, PhantomJS::Bridge, Safari::Bridge
Constant Summary collapse
- COMMANDS =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol#command-reference
{ new_session: [:post, 'session'.freeze], get_capabilities: [:get, 'session/:session_id'.freeze], status: [:get, 'status'.freeze], # # basic driver # get_current_url: [:get, 'session/:session_id/url'.freeze], get: [:post, 'session/:session_id/url'.freeze], go_forward: [:post, 'session/:session_id/forward'.freeze], go_back: [:post, 'session/:session_id/back'.freeze], refresh: [:post, 'session/:session_id/refresh'.freeze], quit: [:delete, 'session/:session_id'.freeze], close: [:delete, 'session/:session_id/window'.freeze], get_page_source: [:get, 'session/:session_id/source'.freeze], get_title: [:get, 'session/:session_id/title'.freeze], find_element: [:post, 'session/:session_id/element'.freeze], find_elements: [:post, 'session/:session_id/elements'.freeze], get_active_element: [:post, 'session/:session_id/element/active'.freeze], # # window handling # get_current_window_handle: [:get, 'session/:session_id/window_handle'.freeze], get_window_handles: [:get, 'session/:session_id/window_handles'.freeze], set_window_size: [:post, 'session/:session_id/window/:window_handle/size'.freeze], set_window_position: [:post, 'session/:session_id/window/:window_handle/position'.freeze], get_window_size: [:get, 'session/:session_id/window/:window_handle/size'.freeze], get_window_position: [:get, 'session/:session_id/window/:window_handle/position'.freeze], maximize_window: [:post, 'session/:session_id/window/:window_handle/maximize'.freeze], # # script execution # execute_script: [:post, 'session/:session_id/execute'.freeze], execute_async_script: [:post, 'session/:session_id/execute_async'.freeze], # # screenshot # screenshot: [:get, 'session/:session_id/screenshot'.freeze], # # alerts # dismiss_alert: [:post, 'session/:session_id/dismiss_alert'.freeze], accept_alert: [:post, 'session/:session_id/accept_alert'.freeze], get_alert_text: [:get, 'session/:session_id/alert_text'.freeze], set_alert_value: [:post, 'session/:session_id/alert_text'.freeze], set_authentication: [:post, 'session/:session_id/alert/credentials'.freeze], # # target locator # switch_to_frame: [:post, 'session/:session_id/frame'.freeze], switch_to_parent_frame: [:post, 'session/:session_id/frame/parent'.freeze], switch_to_window: [:post, 'session/:session_id/window'.freeze], # # options # get_cookies: [:get, 'session/:session_id/cookie'.freeze], add_cookie: [:post, 'session/:session_id/cookie'.freeze], delete_all_cookies: [:delete, 'session/:session_id/cookie'.freeze], delete_cookie: [:delete, 'session/:session_id/cookie/:name'.freeze], # # timeouts # implicitly_wait: [:post, 'session/:session_id/timeouts/implicit_wait'.freeze], set_script_timeout: [:post, 'session/:session_id/timeouts/async_script'.freeze], set_timeout: [:post, 'session/:session_id/timeouts'.freeze], # # element # describe_element: [:get, 'session/:session_id/element/:id'.freeze], find_child_element: [:post, 'session/:session_id/element/:id/element'.freeze], find_child_elements: [:post, 'session/:session_id/element/:id/elements'.freeze], click_element: [:post, 'session/:session_id/element/:id/click'.freeze], submit_element: [:post, 'session/:session_id/element/:id/submit'.freeze], get_element_value: [:get, 'session/:session_id/element/:id/value'.freeze], send_keys_to_element: [:post, 'session/:session_id/element/:id/value'.freeze], upload_file: [:post, 'session/:session_id/file'.freeze], get_element_tag_name: [:get, 'session/:session_id/element/:id/name'.freeze], clear_element: [:post, 'session/:session_id/element/:id/clear'.freeze], is_element_selected: [:get, 'session/:session_id/element/:id/selected'.freeze], is_element_enabled: [:get, 'session/:session_id/element/:id/enabled'.freeze], get_element_attribute: [:get, 'session/:session_id/element/:id/attribute/:name'.freeze], element_equals: [:get, 'session/:session_id/element/:id/equals/:other'.freeze], is_element_displayed: [:get, 'session/:session_id/element/:id/displayed'.freeze], get_element_location: [:get, 'session/:session_id/element/:id/location'.freeze], get_element_location_once_scrolled_into_view: [:get, 'session/:session_id/element/:id/location_in_view'.freeze], get_element_size: [:get, 'session/:session_id/element/:id/size'.freeze], drag_element: [:post, 'session/:session_id/element/:id/drag'.freeze], get_element_value_of_css_property: [:get, 'session/:session_id/element/:id/css/:property_name'.freeze], get_element_text: [:get, 'session/:session_id/element/:id/text'.freeze], # # rotatable # get_screen_orientation: [:get, 'session/:session_id/orientation'.freeze], set_screen_orientation: [:post, 'session/:session_id/orientation'.freeze], # # interactions API # click: [:post, 'session/:session_id/click'.freeze], double_click: [:post, 'session/:session_id/doubleclick'.freeze], mouse_down: [:post, 'session/:session_id/buttondown'.freeze], mouse_up: [:post, 'session/:session_id/buttonup'.freeze], mouse_move_to: [:post, 'session/:session_id/moveto'.freeze], send_modifier_key_to_active_element: [:post, 'session/:session_id/modifier'.freeze], send_keys_to_active_element: [:post, 'session/:session_id/keys'.freeze], # # html 5 # execute_sql: [:post, 'session/:session_id/execute_sql'.freeze], get_location: [:get, 'session/:session_id/location'.freeze], set_location: [:post, 'session/:session_id/location'.freeze], get_app_cache: [:get, 'session/:session_id/application_cache'.freeze], get_app_cache_status: [:get, 'session/:session_id/application_cache/status'.freeze], clear_app_cache: [:delete, 'session/:session_id/application_cache/clear'.freeze], get_network_connection: [:get, 'session/:session_id/network_connection'.freeze], set_network_connection: [:post, 'session/:session_id/network_connection'.freeze], get_local_storage_item: [:get, 'session/:session_id/local_storage/key/:key'.freeze], remove_local_storage_item: [:delete, 'session/:session_id/local_storage/key/:key'.freeze], get_local_storage_keys: [:get, 'session/:session_id/local_storage'.freeze], set_local_storage_item: [:post, 'session/:session_id/local_storage'.freeze], clear_local_storage: [:delete, 'session/:session_id/local_storage'.freeze], get_local_storage_size: [:get, 'session/:session_id/local_storage/size'.freeze], get_session_storage_item: [:get, 'session/:session_id/session_storage/key/:key'.freeze], remove_session_storage_item: [:delete, 'session/:session_id/session_storage/key/:key'.freeze], get_session_storage_keys: [:get, 'session/:session_id/session_storage'.freeze], set_session_storage_item: [:post, 'session/:session_id/session_storage'.freeze], clear_session_storage: [:delete, 'session/:session_id/session_storage'.freeze], get_session_storage_size: [:get, 'session/:session_id/session_storage/size'.freeze], # # ime # ime_get_available_engines: [:get, 'session/:session_id/ime/available_engines'.freeze], ime_get_active_engine: [:get, 'session/:session_id/ime/active_engine'.freeze], ime_is_activated: [:get, 'session/:session_id/ime/activated'.freeze], ime_deactivate: [:post, 'session/:session_id/ime/deactivate'.freeze], ime_activate_engine: [:post, 'session/:session_id/ime/activate'.freeze], # # touch # touch_single_tap: [:post, 'session/:session_id/touch/click'.freeze], touch_double_tap: [:post, 'session/:session_id/touch/doubleclick'.freeze], touch_long_press: [:post, 'session/:session_id/touch/longclick'.freeze], touch_down: [:post, 'session/:session_id/touch/down'.freeze], touch_up: [:post, 'session/:session_id/touch/up'.freeze], touch_move: [:post, 'session/:session_id/touch/move'.freeze], touch_scroll: [:post, 'session/:session_id/touch/scroll'.freeze], touch_flick: [:post, 'session/:session_id/touch/flick'.freeze], # # logs # get_available_log_types: [:get, 'session/:session_id/log/types'.freeze], get_log: [:post, 'session/:session_id/log'.freeze] }.freeze
Instance Attribute Summary collapse
- #capabilities ⇒ Object readonly private
- #context ⇒ Object private
- #file_detector ⇒ Object private
- #http ⇒ Object private
Instance Method Summary collapse
-
#accept_alert ⇒ Object
private
alerts.
- #action ⇒ ActionBuilder
-
#active_element ⇒ Object
(also: #switch_to_active_element)
private
finding elements.
- #add_cookie(cookie) ⇒ Object private
- #alert=(keys) ⇒ Object private
- #alert_text ⇒ Object private
- #authentication(credentials) ⇒ Object private
-
#available_log_types ⇒ Object
private
logs.
- #browser ⇒ Object private
- #clear_element(element) ⇒ Object private
- #clear_local_storage ⇒ Object private
- #clear_session_storage ⇒ Object private
- #click ⇒ Object private
- #click_element(element) ⇒ Object private
- #close ⇒ Object private
- #commands(command) ⇒ Object private
- #context_click ⇒ Object private
- #cookies ⇒ Object private
- #create_session(desired_capabilities) ⇒ Object private
- #delete_all_cookies ⇒ Object private
- #delete_cookie(name) ⇒ Object private
- #dismiss_alert ⇒ Object private
- #double_click ⇒ Object private
- #drag_element(element, right_by, down_by) ⇒ Object private
- #driver_extensions ⇒ Object private
- #element_attribute(element, name) ⇒ Object private
- #element_displayed?(element) ⇒ Boolean private
- #element_enabled?(element) ⇒ Boolean private
- #element_location(element) ⇒ Object private
- #element_location_once_scrolled_into_view(element) ⇒ Object private
-
#element_property(element, name) ⇒ Object
private
Backwards compatibility for w3c.
- #element_selected?(element) ⇒ Boolean private
- #element_size(element) ⇒ Object private
-
#element_tag_name(element) ⇒ Object
private
element properties.
- #element_text(element) ⇒ Object private
- #element_value(element) ⇒ Object private
- #element_value_of_css_property(element, prop) ⇒ Object private
- #execute_async_script(script, *args) ⇒ Object private
-
#execute_script(script, *args) ⇒ Object
private
javascript execution.
- #find_element_by(how, what, parent = nil) ⇒ Object private
- #find_elements_by(how, what, parent = nil) ⇒ Object private
- #get(url) ⇒ Object private
-
#go_back ⇒ Object
private
navigation.
- #go_forward ⇒ Object private
- #implicit_wait_timeout=(milliseconds) ⇒ Object private
-
#initialize(opts = {}) ⇒ Bridge
constructor
private
Initializes the bridge with the given server URL.
- #keyboard ⇒ Object private
-
#local_storage_item(key, value = nil) ⇒ Object
private
HTML 5.
- #local_storage_keys ⇒ Object private
- #local_storage_size ⇒ Object private
- #location ⇒ Object private
- #log(type) ⇒ Object private
- #maximize_window(handle = :current) ⇒ Object private
- #mouse ⇒ Object private
- #mouse_down ⇒ Object private
- #mouse_move_to(element, x = nil, y = nil) ⇒ Object private
- #mouse_up ⇒ Object private
- #network_connection ⇒ Object private
- #network_connection=(type) ⇒ Object private
-
#options ⇒ Object
private
cookies.
- #page_source ⇒ Object private
- #quit ⇒ Object private
- #refresh ⇒ Object private
- #remove_local_storage_item(key) ⇒ Object private
- #remove_session_storage_item(key) ⇒ Object private
- #reposition_window(x, y, handle = :current) ⇒ Object private
- #resize_window(width, height, handle = :current) ⇒ Object private
- #screen_orientation ⇒ Object private
- #screen_orientation=(orientation) ⇒ Object private
- #screenshot ⇒ Object private
- #script_timeout=(milliseconds) ⇒ Object private
- #send_keys_to_active_element(key) ⇒ Object private
- #send_keys_to_element(element, keys) ⇒ Object private
- #session_capabilities ⇒ Object private
-
#session_id ⇒ Object
private
Returns the current session ID.
- #session_storage_item(key, value = nil) ⇒ Object private
- #session_storage_keys ⇒ Object private
- #session_storage_size ⇒ Object private
- #set_location(lat, lon, alt) ⇒ Object private
- #status ⇒ Object private
- #submit_element(element) ⇒ Object private
- #switch_to_default_content ⇒ Object private
- #switch_to_frame(id) ⇒ Object private
- #switch_to_parent_frame ⇒ Object private
- #switch_to_window(name) ⇒ Object private
- #timeout(type, milliseconds) ⇒ Object private
- #title ⇒ Object private
- #touch_double_tap(element) ⇒ Object private
- #touch_down(x, y) ⇒ Object private
- #touch_element_flick(element, right_by, down_by, speed) ⇒ Object private
- #touch_flick(xspeed, yspeed) ⇒ Object private
- #touch_long_press(element) ⇒ Object private
- #touch_move(x, y) ⇒ Object private
- #touch_scroll(element, x, y) ⇒ Object private
- #touch_single_tap(element) ⇒ Object private
- #touch_up(x, y) ⇒ Object private
- #upload(local_file) ⇒ Object private
- #url ⇒ Object private
- #window_handle ⇒ Object private
-
#window_handles ⇒ Object
private
window handling.
- #window_position(handle = :current) ⇒ Object private
- #window_size(handle = :current) ⇒ Object private
Methods included from BridgeHelper
#element_id_from, #parse_cookie_string, #unwrap_script_result
Constructor Details
#initialize(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.
Initializes the bridge with the given server URL.
43 44 45 46 47 48 49 50 51 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 43 def initialize(opts = {}) opts = opts.dup port = opts.delete(:port) || 4444 http_client = opts.delete(:http_client) { Http::Default.new } desired_capabilities = opts.delete(:desired_capabilities) { Capabilities.firefox } url = opts.delete(:url) { "http://#{Platform.localhost}:#{port}/wd/hub" } unless opts.empty? raise ArgumentError, "unknown option#{'s' if opts.size != 1}: #{opts.inspect}" end if desired_capabilities.is_a?(Symbol) unless Capabilities.respond_to?(desired_capabilities) raise Error::WebDriverError, "invalid desired capability: #{desired_capabilities.inspect}" end desired_capabilities = Capabilities.send(desired_capabilities) end uri = url.is_a?(URI) ? url : URI.parse(url) uri.path += '/' unless uri.path =~ %r{\/$} http_client.server_url = uri @http = http_client @capabilities = create_session(desired_capabilities) @file_detector = nil end |
Instance Attribute Details
#capabilities ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
33 34 35 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 33 def capabilities @capabilities end |
#context ⇒ 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.
32 33 34 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 32 def context @context end |
#file_detector ⇒ 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.
32 33 34 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 32 def file_detector @file_detector end |
#http ⇒ 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.
32 33 34 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 32 def http @http end |
Instance Method Details
#accept_alert ⇒ 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.
alerts
143 144 145 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 143 def accept_alert execute :accept_alert end |
#action ⇒ ActionBuilder
381 382 383 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 381 def action ActionBuilder.new Mouse.new(self), Keyboard.new(self) end |
#active_element ⇒ Object 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
606 607 608 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 606 def active_element Element.new self, element_id_from(execute(:get_active_element)) end |
#add_cookie(cookie) ⇒ 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.
356 357 358 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 356 def () execute :add_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.
151 152 153 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 151 def alert=(keys) execute :set_alert_value, {}, {text: keys.to_s} end |
#alert_text ⇒ 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.
155 156 157 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 155 def alert_text execute :get_alert_text end |
#authentication(credentials) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
159 160 161 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 159 def authentication(credentials) execute :set_authentication, {}, credentials end |
#available_log_types ⇒ 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.
logs
526 527 528 529 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 526 def available_log_types types = execute :get_available_log_types Array(types).map(&:to_sym) end |
#browser ⇒ 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.
74 75 76 77 78 79 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 74 def browser @browser ||= ( name = @capabilities.browser_name name ? name.tr(' ', '_').to_sym : 'unknown' ) 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.
457 458 459 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 457 def clear_element(element) execute :clear_element, id: element end |
#clear_local_storage ⇒ 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.
280 281 282 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 280 def clear_local_storage execute :clear_local_storage end |
#clear_session_storage ⇒ 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.
304 305 306 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 304 def clear_session_storage execute :clear_session_storage end |
#click ⇒ 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/bridge.rb', line 405 def click execute :click, {}, {button: 0} end |
#click_element(element) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
401 402 403 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 401 def click_element(element) execute :click_element, id: element end |
#close ⇒ 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.
209 210 211 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 209 def close execute :close end |
#commands(command) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
95 96 97 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 95 def commands(command) COMMANDS[command] end |
#context_click ⇒ 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.
413 414 415 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 413 def context_click execute :click, {}, {button: 2} end |
#cookies ⇒ 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.
364 365 366 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 364 def execute :get_cookies end |
#create_session(desired_capabilities) ⇒ 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.
107 108 109 110 111 112 113 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 107 def create_session(desired_capabilities) resp = raw_execute :new_session, {}, {desiredCapabilities: desired_capabilities} @session_id = resp['sessionId'] return Capabilities.json_create resp['value'] if @session_id raise Error::WebDriverError, 'no sessionId in returned payload' end |
#delete_all_cookies ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
368 369 370 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 368 def execute :delete_all_cookies end |
#delete_cookie(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.
360 361 362 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 360 def (name) execute :delete_cookie, name: name end |
#dismiss_alert ⇒ 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.
147 148 149 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 147 def dismiss_alert execute :dismiss_alert end |
#double_click ⇒ 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 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 409 def double_click execute :double_click end |
#drag_element(element, right_by, down_by) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
465 466 467 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 465 def drag_element(element, right_by, down_by) execute :drag_element, {id: element}, {x: right_by, y: down_by} end |
#driver_extensions ⇒ 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.
81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 81 def driver_extensions [ DriverExtensions::UploadsFiles, DriverExtensions::TakesScreenshot, DriverExtensions::HasSessionId, DriverExtensions::Rotatable, DriverExtensions::HasTouchScreen, DriverExtensions::HasLocation, DriverExtensions::HasNetworkConnection, DriverExtensions::HasRemoteStatus, DriverExtensions::HasWebStorage ] 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.
551 552 553 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 551 def element_attribute(element, name) execute :get_element_attribute, id: element.ref, name: name end |
#element_displayed?(element) ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
594 595 596 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 594 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.
586 587 588 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 586 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.
568 569 570 571 572 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 568 def element_location(element) data = execute :get_element_location, id: element Point.new data['x'], data['y'] end |
#element_location_once_scrolled_into_view(element) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
574 575 576 577 578 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 574 def element_location_once_scrolled_into_view(element) data = execute :get_element_location_once_scrolled_into_view, id: element Point.new data['x'], data['y'] end |
#element_property(element, name) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Backwards compatibility for w3c
556 557 558 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 556 def element_property(element, name) execute_script 'return arguments[0][arguments[1]]', element, name 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.
590 591 592 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 590 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.
580 581 582 583 584 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 580 def element_size(element) data = execute :get_element_size, id: element Dimension.new data['width'], data['height'] end |
#element_tag_name(element) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
element properties
547 548 549 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 547 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.
564 565 566 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 564 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.
560 561 562 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 560 def element_value(element) execute :get_element_value, id: element end |
#element_value_of_css_property(element, prop) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
598 599 600 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 598 def element_value_of_css_property(element, prop) execute :get_element_value_of_css_property, id: element, property_name: prop end |
#execute_async_script(script, *args) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
341 342 343 344 345 346 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 341 def execute_async_script(script, *args) assert_javascript_enabled result = execute :execute_async_script, {}, {script: script, args: args} unwrap_script_result result end |
#execute_script(script, *args) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
javascript execution
334 335 336 337 338 339 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 334 def execute_script(script, *args) assert_javascript_enabled result = execute :execute_script, {}, {script: script, args: args} unwrap_script_result result end |
#find_element_by(how, what, parent = nil) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
612 613 614 615 616 617 618 619 620 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 612 def find_element_by(how, what, parent = nil) id = if parent execute :find_child_element, {id: parent}, {using: how, value: what} else execute :find_element, {}, {using: how, value: what} end Element.new self, element_id_from(id) end |
#find_elements_by(how, what, parent = nil) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
622 623 624 625 626 627 628 629 630 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 622 def find_elements_by(how, what, parent = nil) ids = if parent execute :find_child_elements, {id: parent}, {using: how, value: what} else execute :find_elements, {}, {using: how, value: what} end ids.map { |id| Element.new self, element_id_from(id) } end |
#get(url) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
119 120 121 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 119 def get(url) execute :get, {}, {url: url} end |
#go_back ⇒ 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.
navigation
167 168 169 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 167 def go_back execute :go_back end |
#go_forward ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
171 172 173 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 171 def go_forward execute :go_forward end |
#implicit_wait_timeout=(milliseconds) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
127 128 129 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 127 def implicit_wait_timeout=(milliseconds) execute :implicitly_wait, {}, {ms: milliseconds} end |
#keyboard ⇒ 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 396 397 398 399 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 393 def keyboard warn <<-DEPRECATE.gsub(/\n +| {2,}/, ' ').freeze [DEPRECATION] `Driver#keyboard` is deprecated with w3c implementation. Instead use driver.action.<command>.perform DEPRECATE Keyboard.new self end |
#local_storage_item(key, value = nil) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
HTML 5
264 265 266 267 268 269 270 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 264 def local_storage_item(key, value = nil) if value execute :set_local_storage_item, {}, {key: key, value: value} else execute :get_local_storage_item, key: key end end |
#local_storage_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.
276 277 278 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 276 def local_storage_keys execute :get_local_storage_keys end |
#local_storage_size ⇒ 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.
284 285 286 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 284 def local_storage_size execute :get_local_storage_size end |
#location ⇒ 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.
312 313 314 315 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 312 def location obj = execute(:get_location) || {} Location.new obj['latitude'], obj['longitude'], obj['altitude'] end |
#log(type) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
531 532 533 534 535 536 537 538 539 540 541 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 531 def log(type) data = execute :get_log, {}, {type: type.to_s} Array(data).map do |l| begin LogEntry.new l.fetch('level', 'UNKNOWN'), l.fetch('timestamp'), l.fetch('message') rescue KeyError next end end end |
#maximize_window(handle = :current) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
235 236 237 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 235 def maximize_window(handle = :current) execute :maximize_window, window_handle: handle end |
#mouse ⇒ 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 388 389 390 391 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 385 def mouse warn <<-DEPRECATE.gsub(/\n +| {2,}/, ' ').freeze [DEPRECATION] `Driver#mouse` is deprecated with w3c implementation. Instead use driver.action.<command>.perform DEPRECATE Mouse.new self end |
#mouse_down ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
417 418 419 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 417 def mouse_down execute :mouse_down end |
#mouse_move_to(element, x = nil, y = nil) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
425 426 427 428 429 430 431 432 433 434 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 425 def mouse_move_to(element, x = nil, y = nil) params = {element: element} if x && y params[:xoffset] = x params[:yoffset] = y end execute :mouse_move_to, {}, params end |
#mouse_up ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
421 422 423 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 421 def mouse_up execute :mouse_up end |
#network_connection ⇒ 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.
322 323 324 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 322 def network_connection execute :get_network_connection end |
#network_connection=(type) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
326 327 328 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 326 def network_connection=(type) execute :set_network_connection, {}, {parameters: {type: type}} end |
#options ⇒ 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.
cookies
352 353 354 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 352 def @options ||= WebDriver::Options.new(self) end |
#page_source ⇒ 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.
183 184 185 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 183 def page_source execute :get_page_source end |
#quit ⇒ 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.
203 204 205 206 207 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 203 def quit execute :quit http.close rescue *http.quit_errors end |
#refresh ⇒ 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.
213 214 215 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 213 def refresh execute :refresh end |
#remove_local_storage_item(key) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
272 273 274 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 272 def remove_local_storage_item(key) execute :remove_local_storage_item, key: key end |
#remove_session_storage_item(key) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
296 297 298 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 296 def remove_session_storage_item(key) execute :remove_session_storage_item, key: key end |
#reposition_window(x, y, handle = :current) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
245 246 247 248 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 245 def reposition_window(x, y, handle = :current) execute :set_window_position, {window_handle: handle}, {x: x, y: y} end |
#resize_window(width, height, handle = :current) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
229 230 231 232 233 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 229 def resize_window(width, height, handle = :current) execute :set_window_size, {window_handle: handle}, {width: width, height: height} end |
#screen_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.
518 519 520 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 518 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.
514 515 516 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 514 def screen_orientation=(orientation) execute :set_screen_orientation, {}, {orientation: orientation} end |
#screenshot ⇒ 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.
256 257 258 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 256 def screenshot execute :screenshot end |
#script_timeout=(milliseconds) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
131 132 133 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 131 def script_timeout=(milliseconds) execute :set_script_timeout, {}, {ms: milliseconds} end |
#send_keys_to_active_element(key) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
436 437 438 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 436 def send_keys_to_active_element(key) execute :send_keys_to_active_element, {}, {value: key} end |
#send_keys_to_element(element, keys) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
440 441 442 443 444 445 446 447 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 440 def send_keys_to_element(element, keys) if @file_detector local_file = @file_detector.call(keys) keys = upload(local_file) if local_file end execute :send_keys_to_element, {id: element}, {value: Array(keys)} end |
#session_capabilities ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
123 124 125 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 123 def session_capabilities Capabilities.json_create execute(:get_capabilities) end |
#session_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.
Returns the current session ID.
103 104 105 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 103 def session_id @session_id || raise(Error::WebDriverError, 'no current session exists') 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.
288 289 290 291 292 293 294 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 288 def session_storage_item(key, value = nil) if value execute :set_session_storage_item, {}, {key: key, value: value} else execute :get_session_storage_item, key: key end end |
#session_storage_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.
300 301 302 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 300 def session_storage_keys execute :get_session_storage_keys end |
#session_storage_size ⇒ 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.
308 309 310 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 308 def session_storage_size execute :get_session_storage_size end |
#set_location(lat, lon, alt) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
317 318 319 320 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 317 def set_location(lat, lon, alt) loc = {latitude: lat, longitude: lon, altitude: alt} execute :set_location, {}, {location: loc} end |
#status ⇒ 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.
115 116 117 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 115 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.
461 462 463 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 461 def submit_element(element) execute :submit_element, id: element end |
#switch_to_default_content ⇒ 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.
199 200 201 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 199 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.
191 192 193 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 191 def switch_to_frame(id) execute :switch_to_frame, {}, {id: id} end |
#switch_to_parent_frame ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
195 196 197 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 195 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.
187 188 189 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 187 def switch_to_window(name) execute :switch_to_window, {}, {name: name} end |
#timeout(type, milliseconds) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
135 136 137 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 135 def timeout(type, milliseconds) execute :set_timeout, {}, {type: type, ms: milliseconds} end |
#title ⇒ 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.
179 180 181 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 179 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.
473 474 475 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 473 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.
481 482 483 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 481 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.
507 508 509 510 511 512 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 507 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.
503 504 505 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 503 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.
477 478 479 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 477 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.
489 490 491 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 489 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.
493 494 495 496 497 498 499 500 501 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 493 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.
469 470 471 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 469 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.
485 486 487 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 485 def touch_up(x, y) execute :touch_up, {}, {x: x, y: y} end |
#upload(local_file) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
449 450 451 452 453 454 455 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 449 def upload(local_file) unless File.file?(local_file) raise Error::WebDriverError, "you may only upload files: #{local_file.inspect}" end execute :upload_file, {}, {file: Zipper.zip_file(local_file)} end |
#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.
175 176 177 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 175 def url execute :get_current_url end |
#window_handle ⇒ 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.
225 226 227 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 225 def window_handle execute :get_current_window_handle end |
#window_handles ⇒ 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.
window handling
221 222 223 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 221 def window_handles execute :get_window_handles end |
#window_position(handle = :current) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
250 251 252 253 254 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 250 def window_position(handle = :current) data = execute :get_window_position, window_handle: handle Point.new data['x'], data['y'] end |
#window_size(handle = :current) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
239 240 241 242 243 |
# File 'lib/selenium/webdriver/remote/bridge.rb', line 239 def window_size(handle = :current) data = execute :get_window_size, window_handle: handle Dimension.new data['width'], data['height'] end |