Features
< Back to Blog Overview

Network Traffic inspection with Selenium

2011-12-21
  • Share on Facebook
  • Share on Twitter
  • Share on LinkedIn
  • Share on HackerNews

Today we're examining the captureNetworkTraffic selenium command, a little known gem in Selenium's command list.


Selenium offers a feature, captureNetworkTraffic, which allows you to intercept the network traffic as seen by the browser running your test. The response includes headers, status codes, timings and AJAX requests. It's especially useful if you're debugging requests in your browser.


An example on how to use this in ruby:

Copy code
require "rubygems"
gem "selenium-client"
require "selenium/client"
gem 'test-unit'
require 'test/unit'

gem "testingbot"
require "testingbot"

class ExampleTest < TestingBot::TestCase
  attr_reader :browser

  def setup
    @browser = Selenium::Client::Driver.new \
        :host => "hub.testingbot.com",
        :port => 4444,
        :browser => "firefox",
        :version => "8",
        :platform => "WINDOWS",
        :url => "http://www.google.com",
        :timeout_in_second => 60

    browser.start_new_browser_session(:captureNetworkTraffic => true)
  end

  def teardown
    browser.close_current_browser_session
  end

  def test_command
    browser.open "/"
    p browser.browser_network_traffic
  end
end

This will open Google in Firefox 8 and return the network traffic. An example of a response would be:


Copy code

"403 GET http://localhost:5555/favicon.ico1333 bytes 94ms 
(2011-12-21T15:53:06.352+0100 - 2011-12-21T15:53:06.446+0100
 Request Headers - Host => localhost:5555 - 
User-Agent => Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0.1) Gecko/20100101 
Firefox/8.0.1 - Accept => image/png,image/*;q=0.8,*/*;q=0.5 - 
Accept-Language => en-us,en;q=0.5 - Accept-Encoding => gzip, deflate - Accept-Charset => ISO-8859-1,utf-8;q=0.7,*;q=0.7 - 
Proxy-Connection => keep-aliveResponse Headers - Date => Wed, 21 Dec 2011 14:53:06 GMT - 
Server => Jetty/5.1.x (Windows 7/6.1 x86 java/1.6.0_26 - Content-Type => text/html - 
Content-Length => 1333 - Via => 1.1 (jetty)

This command is available on our Grid and can be used to debug requests and calculate how long a request takes.

TestingBot Logo

Sign up for a Free Trial

Start testing your apps with TestingBot.

No credit card required.

Other Articles

blank

We have just finished optimizing the video recording in our Selenium grid. Implementing this was harder than we thought, so here are some tips on h...

Read more
blank

After some more optimisations in our code and infrastructure we've now reached the point where the average simple test takes 9 seconds. Compared ...

Read more
blank

We've just finished upgrading our Selenium grid (the hub and all its RC nodes) to Selenium v2.15.0 This upgrade should provide improved stability.

Read more
blank

Selenium is the industry standard for automatically testing websites in browsers. A selenium test is a set of instructions that will be sent to a b...

Read more
blank

Actually, there are more than 5 reasons why you should be using our service. We will list the top 5 reasons below, but if you want to discover what...

Read more
blank

TestingBot Launches

2011-11-21

With the start of this new website we provide every developer a powerful tool to run cross browser tests in the cloud. Running Selenium tests ac...

Read more