module Selenium::WebDriver::DriverExtensions::HasNetworkInterception

Public Instance Methods

intercept(&block) click to toggle source

Intercepts requests coming from browser allowing to either pass them through like proxy or provide a stubbed response instead.

@example Log requests and pass through

driver.intercept do |request, &continue|
  puts "#{request.method} #{request.url}"
  continue.call(request)
end

@example Stub requests for images

driver.intercept do |request, &continue|
  if request.url.match?(/\.png$/)
    request.url = 'https://upload.wikimedia.org/wikipedia/commons/d/d5/Selenium_Logo.png'
  end
  continue.call(request)
end

@example Log responses and pass through

driver.intercept do |request, &continue|
  continue.call(request) do |response|
    puts "#{response.code} #{response.body}"
  end
end

@example Mutate specific response

driver.intercept do |request, &continue|
  continue.call(request) do |response|
    response.body << 'Added by Selenium!' if request.url.include?('/myurl')
  end
end

@param [Proc] block which is called when request is intercepted @yieldparam [DevTools::Request] request @yieldparam [Proc] continue block which proceeds with the request and optionally yields response

# File lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb, line 63
def intercept(&block)
  @interceptor ||= DevTools::NetworkInterceptor.new(devtools)
  @interceptor.intercept(&block)
end