class Selenium::WebDriver::Network

Attributes

bidi[R]
callbacks[R]
network[R]

Public Class Methods

new(bridge) click to toggle source
# File lib/selenium/webdriver/common/network.rb, line 32
def initialize(bridge)
  @network = BiDi::Network.new(bridge.bidi)
  @callbacks = {}
end

Public Instance Methods

add_authentication_handler(username = nil, password = nil, *filter, pattern_type: nil, &block) click to toggle source
# File lib/selenium/webdriver/common/network.rb, line 47
def add_authentication_handler(username = nil, password = nil, *filter, pattern_type: nil, &block)
  selected_block =
    if username && password
      proc { |auth| auth.authenticate(username, password) }
    else
      block
    end

  add_handler(
    :auth_required,
    BiDi::Network::PHASES[:auth_required],
    BiDi::InterceptedAuth,
    filter,
    pattern_type: pattern_type,
    &selected_block
  )
end
add_request_handler(*filter, pattern_type: nil, &block) click to toggle source
# File lib/selenium/webdriver/common/network.rb, line 65
def add_request_handler(*filter, pattern_type: nil, &block)
  add_handler(
    :before_request,
    BiDi::Network::PHASES[:before_request],
    BiDi::InterceptedRequest,
    filter,
    pattern_type: pattern_type,
    &block
  )
end
add_response_handler(*filter, pattern_type: nil, &block) click to toggle source
# File lib/selenium/webdriver/common/network.rb, line 76
def add_response_handler(*filter, pattern_type: nil, &block)
  add_handler(
    :response_started,
    BiDi::Network::PHASES[:response_started],
    BiDi::InterceptedResponse,
    filter,
    pattern_type: pattern_type,
    &block
  )
end
clear_handlers() click to toggle source
# File lib/selenium/webdriver/common/network.rb, line 43
def clear_handlers
  callbacks.each_key { |id| remove_handler(id) }
end
remove_handler(id) click to toggle source
# File lib/selenium/webdriver/common/network.rb, line 37
def remove_handler(id)
  intercept = callbacks[id]
  network.remove_intercept(intercept['intercept'])
  callbacks.delete(id)
end

Private Instance Methods

add_handler(event_type, phase, intercept_type, filter, pattern_type: nil) { |intercepted_item| ... } click to toggle source
# File lib/selenium/webdriver/common/network.rb, line 89
def add_handler(event_type, phase, intercept_type, filter, pattern_type: nil)
  intercept = network.add_intercept(phases: [phase], url_patterns: [filter].flatten, pattern_type: pattern_type)
  callback_id = network.on(event_type) do |event|
    request = event['request']
    intercepted_item = intercept_type.new(network, request)
    yield(intercepted_item)
  end

  callbacks[callback_id] = intercept
  callback_id
end