module Selenium::WebDriver::DriverExtensions::HasNetworkInterception
Public Instance Methods
intercept(&)
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 62 def intercept(&) if browser == :firefox WebDriver.logger.deprecate( 'Driver#intercept on Firefox', 'the new bidi.network.add_intercept method', id: :intercept ) end @interceptor ||= DevTools::NetworkInterceptor.new(devtools) @interceptor.intercept(&) end