• Home
  • New Entries
  • Popular Entries
  • Submit a Story
  • About

Dissecting Selenium WebDriver JSON WireProtocol ...

Digging into WebDriver today an interesting question popped up.  How does WebDriver interact with browser?! Only thing I knew that it was using JNI to connect to native DLL’s.
So I decided to attach my Eclipse debugger to WebDriver sources and execute a WebDriver Hello World test. The first thing I noticed was this interesting packet being sent:

{
   "response": "Unable to locate element: {"method":"id","selector":"q"}",
   "context": "{711c552c-4fac-473c-83ce-dc767ff37ff2} ",
   "commandName": "findElement",
   "isError": true
}

Which is nothing else but JSON. This increased even more my curiosity. Well, JSON being used by WebDriver to sent messages to browser, then who is the server and who is the client? What is the protocol? I ended up finding the answer here JsonWireProtocol.
And the FirefoxDriver source class too:

public class FirefoxDriver implements WebDriver ... {
   protected Object executeCommand(Class<RuntimeException> throwOnFailure,
                             Command command) {
      Response response = extension.sendMessageAndWaitForResponse(
                     throwOnFailure, command);
      context = response.getContext();
      response.ifNecessaryThrow(throwOnFailure);
......

So what is actually happening is:
1. When a WebDriver test is being created and executed.
2. This test makes an HTTP call to Firefox (or any browser) using JNI (I am still puzzled here how this exactly works)
2. And the listener (the server) is the actual browser. Quite confusing eh?
3. The listener(the browser) receives the HTTP request from WebDriver and responds back with a JSON HTTP packet.
4. WebDriver digest the response packet and either calls back the command OR fails the execution.

 Original Source:
http://www.roussev.org/2010/02/dissecting-selenium-webdriver-json-wireprotocol/

AddThis Social Bookmark Button

Posted at 12:04:49 pm | Permalink | Posted in JSON  

Related Stuff

  • MooV: Using cutting edge Video phones and Software Video Phones - coupling all that with VoIP and empowering the disabled.

  • Moo Telecom: VoIP communications made easy - Ring anyway with the fun and ease of using a normal phone

  • TagR:Mobile Social Network with Real Time Locations Based services, and Ambience Intelligence, VoiP, IM, Skype, Googletalk, Mapping, Flickr, Events, Calendaring, Scheduling, SecondLife Support

  • ClearSMS : ClearSMS is a Web-based application that lets you send bulk SMS messages to your customers, contacts, or just about anyone.

  • Jajah:jah is a VoIP (Voice over IP) provider, founded by Austrians Roman Scharf and Daniel Mattes in 2005[1]. The Jajah headquarters are located in Mountain View, CA, USA, and Luxembourg. Jajah maintains a development centre in Israel.

  • Skype: It’s free to download and free to call other people on Skype. Skype the number one voice over ip software

  • PrivatePhone: a free local phone number with voicemail and messages you can check online or from any phone.

Top Stuff

e-messenger

MSN Web Messenger

eBuddy

ASP.NET Ajax CalendarExtender and Validation

AIM Express

Ajax Tools for ASP.NET Developers



About Ajaxlines

Ajaxlines is a project focused on providing its audience with a database of most of Ajax related articles, resources, tutorials and services from around the world.

Its purpose is to showcase the power of Ajax and to act as a portal to the Ajax development community.


Search


Topics

  • .Net (176)
  • Ajax (112)
  • Ajax Games (10)
  • Articles (95)
  • Bookmarking (35)
  • Calendar (21)
  • Chat (45)
  • ColdFusion (3)
  • CSS (84)
  • Email (23)
  • Facebook (84)
  • Flash (20)
  • Google (54)
  • Html (29)
  • Image (12)
  • International Calls & VOIP (7)
  • Java (58)
  • Javascript (280)
  • jQuery (200)
  • JSON (75)
  • Perl (2)
  • PHP (172)
  • Presentation (19)
  • Python (3)
  • Resources (2)
  • RSS (8)
  • Ruby (32)
  • Storage (4)
  • Toolkits (103)
  • Tutorials (227)
  • UI (11)
  • Utilities (174)
  • Web2.0 (18)
  • XmlHttpRequest (29)
  • YUI (13)

© 2006 www.ajaxlines.com. All Rights Reserved. Powered by IRange