123456789_123456789_123456789_123456789_123456789_

Class: Selenium::WebDriver::Network

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
self, Forwardable
Inherits: Object
Defined in: rb/lib/selenium/webdriver/common/network.rb

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(bridge) ⇒ Network

[ GitHub ]

  
# File 'rb/lib/selenium/webdriver/common/network.rb', line 32

def initialize(bridge)
  @network = BiDi::Network.new(bridge.bidi)
  @callbacks = {}
end

Instance Attribute Details

#bidi (readonly)

Alias for #network.

[ GitHub ]

  
# File 'rb/lib/selenium/webdriver/common/network.rb', line 28

alias bidi network

#callbacks (readonly)

[ GitHub ]

  
# File 'rb/lib/selenium/webdriver/common/network.rb', line 27

attr_reader :callbacks, :network

#network (readonly) Also known as: #bidi

[ GitHub ]

  
# File 'rb/lib/selenium/webdriver/common/network.rb', line 27

attr_reader :callbacks, :network

Instance Method Details

#add_authentication_handler(username = nil, password = nil, *filter, pattern_type: nil, &block)

[ GitHub ]

  
# File 'rb/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_handler(event_type, phase, intercept_type, filter, pattern_type: nil) (private)

[ GitHub ]

  
# File 'rb/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

#add_request_handler(*filter, pattern_type: nil)

[ GitHub ]

  
# File 'rb/lib/selenium/webdriver/common/network.rb', line 65

def add_request_handler(*filter, pattern_type: nil, &)
  add_handler(
    :before_request,
    BiDi::Network::PHASES[:before_request],
    BiDi::InterceptedRequest,
    filter,
    pattern_type: pattern_type,
    &
  )
end

#add_response_handler(*filter, pattern_type: nil)

[ GitHub ]

  
# File 'rb/lib/selenium/webdriver/common/network.rb', line 76

def add_response_handler(*filter, pattern_type: nil, &)
  add_handler(
    :response_started,
    BiDi::Network::PHASES[:response_started],
    BiDi::InterceptedResponse,
    filter,
    pattern_type: pattern_type,
    &
  )
end

#clear_handlers

[ GitHub ]

  
# File 'rb/lib/selenium/webdriver/common/network.rb', line 43

def clear_handlers
  callbacks.each_key { |id| remove_handler(id) }
end

#remove_handler(id)

[ GitHub ]

  
# File 'rb/lib/selenium/webdriver/common/network.rb', line 37

def remove_handler(id)
  intercept = callbacks[id]
  network.remove_intercept(intercept['intercept'])
  callbacks.delete(id)
end