module Selenium::WebDriver::DriverExtensions::HasAuthentication
Public Instance Methods
register(username:, password:, uri: //)
click to toggle source
Registers basic authentication handler which is automatically used whenever browser gets an authentication required response. This currently relies on DevTools
so is only supported in Chromium browsers.
@example Authenticate any request
driver.register(username: 'admin', password: '123456')
@example Authenticate based on URL
driver.register(username: 'admin1', password: '123456', uri: /mysite1\.com/) driver.register(username: 'admin2', password: '123456', uri: /mysite2\.com/)
@param [String] username @param [String] password @param [Regexp] uri to associate the credentials with
# File lib/selenium/webdriver/common/driver_extensions/has_authentication.rb, line 43 def register(username:, password:, uri: //) auth_handlers << {username: username, password: password, uri: uri} devtools.network.set_cache_disabled(cache_disabled: true) devtools.fetch.on(:auth_required) do |params| authenticate(params['requestId'], params.dig('request', 'url')) end devtools.fetch.on(:request_paused) do |params| devtools.fetch.continue_request(request_id: params['requestId']) end devtools.fetch.enable(handle_auth_requests: true) end
Private Instance Methods
auth_handlers()
click to toggle source
# File lib/selenium/webdriver/common/driver_extensions/has_authentication.rb, line 58 def auth_handlers @auth_handlers ||= [] end
authenticate(request_id, url)
click to toggle source
# File lib/selenium/webdriver/common/driver_extensions/has_authentication.rb, line 62 def authenticate(request_id, url) credentials = auth_handlers.find do |handler| url.match?(handler[:uri]) end if credentials devtools.fetch.continue_with_auth( request_id: request_id, auth_challenge_response: { response: 'ProvideCredentials', username: credentials[:username], password: credentials[:password] } ) else devtools.fetch.continue_with_auth( request_id: request_id, auth_challenge_response: { response: 'CancelAuth' } ) end end