浏览代码

Merge branch 'master' into action-chains-experiment

Emmanuel Peroumalnaik 11 年之前
父节点
当前提交
fe4055aa0a
共有 44 个文件被更改,包括 925 次插入597 次删除
  1. 3 1
      .gitignore
  2. 3 1
      .mailmap
  3. 6 2
      .travis.yml
  4. 19 3
      Changes
  5. 1 1
      README.md
  6. 2 1
      cpanfile
  7. 4 5
      dist.ini
  8. 5 5
      lib/Selenium/Remote/Commands.pm
  9. 51 32
      lib/Selenium/Remote/Driver.pm
  10. 2 1
      lib/Selenium/Remote/Driver/Firefox/Profile.pm
  11. 10 10
      lib/Selenium/Remote/Mock/Commands.pm
  12. 58 58
      lib/Selenium/Remote/Mock/RemoteConnection.pm
  13. 7 4
      lib/Selenium/Remote/RemoteConnection.pm
  14. 17 11
      lib/Selenium/Remote/WebElement.pm
  15. 21 47
      t/01-driver.t
  16. 7 25
      t/02-webelement.t
  17. 0 1
      t/03-spec-coverage.t
  18. 8 27
      t/10-switch-to-window.t
  19. 36 53
      t/Firefox-Profile.t
  20. 39 0
      t/Remote-Connection.t
  21. 6 27
      t/Test-Selenium-Remote-Driver-google.t
  22. 2 2
      t/Test-Selenium-Remote-WebElement.t
  23. 42 37
      t/bin/record.pl
  24. 0 1
      t/error.t
  25. 4 3
      t/http-server.pl
  26. 139 0
      t/lib/TestHarness.pm
  27. 30 0
      t/mock-recordings/01-driver-mock-MSWin32.json
  28. 44 43
      t/mock-recordings/01-driver-mock-darwin.json
  29. 13 21
      t/mock-recordings/01-driver-mock-linux.json
  30. 98 0
      t/mock-recordings/02-webelement-mock-MSWin32.json
  31. 3 5
      t/mock-recordings/02-webelement-mock-darwin.json
  32. 66 69
      t/mock-recordings/02-webelement-mock-linux.json
  33. 41 0
      t/mock-recordings/10-switch-to-window-mock-MSWin32.json
  34. 29 26
      t/mock-recordings/10-switch-to-window-mock-darwin.json
  35. 28 25
      t/mock-recordings/10-switch-to-window-mock-linux.json
  36. 7 0
      t/mock-recordings/firefox-profile-mock-MSWin32.json
  37. 0 0
      t/mock-recordings/firefox-profile-mock-darwin.json
  38. 8 10
      t/mock-recordings/firefox-profile-mock-linux.json
  39. 0 17
      t/mock-recordings/test-selenium-remote-driver-google-darwin.json
  40. 0 17
      t/mock-recordings/test-selenium-remote-driver-google-linux.json
  41. 20 0
      t/mock-recordings/test-selenium-remote-driver-google-mock-MSWin32.json
  42. 20 0
      t/mock-recordings/test-selenium-remote-driver-google-mock-darwin.json
  43. 20 0
      t/mock-recordings/test-selenium-remote-driver-google-mock-linux.json
  44. 6 6
      t/www/encoded_profile.b64

+ 3 - 1
.gitignore

@@ -7,4 +7,6 @@ cover_db
 *.komodo*
 *.komodo*
 *.sublime*
 *.sublime*
 .build
 .build
-Selenium-Remote-Driver-*
+Selenium-Remote-Driver-*
+.prove
+_prove

+ 3 - 1
.mailmap

@@ -4,6 +4,8 @@ Charles Howes <charles.howes@globalrelay.net> <github.com@ch.pkts.ca>
 Daniel Gempesaw <gempesaw@gmail.com>
 Daniel Gempesaw <gempesaw@gmail.com>
 Daniel Gempesaw <gempesaw@gmail.com> <vagrant@precise32.(none)>
 Daniel Gempesaw <gempesaw@gmail.com> <vagrant@precise32.(none)>
 Daniel Gempesaw <gempesaw@gmail.com> <dgempesaw@sharecare.com>
 Daniel Gempesaw <gempesaw@gmail.com> <dgempesaw@sharecare.com>
+Emmanuel Peroumalnaik <eperoumalnaik@weborama.com> <peroumalnaik.emmanuel@gmail.com>
 Gordon Child <gordon@gordonchild.com> <gordon@cpanel.net>
 Gordon Child <gordon@gordonchild.com> <gordon@cpanel.net>
 Gordon Child <gordon@gordonchild.com> <gchild@solutionstream.com>
 Gordon Child <gordon@gordonchild.com> <gchild@solutionstream.com>
-Mark Stosberg <mark@stosberg.com> <mark@summersault.com>
+Mark Stosberg <mark@stosberg.com> <mark@summersault.com>
+Bas Bloemsaat <bas@bloemsaat.com> <bas@tevreden.nl>

+ 6 - 2
.travis.yml

@@ -10,11 +10,15 @@ matrix:
    fast_finish: true
    fast_finish: true
 before_install:
 before_install:
    - export AUTOMATED_TESTING=1 NONINTERACTIVE_TESTING=1 HARNESS_OPTIONS=j10:c HARNESS_TIMER=1
    - export AUTOMATED_TESTING=1 NONINTERACTIVE_TESTING=1 HARNESS_OPTIONS=j10:c HARNESS_TIMER=1
+   - git clone git://github.com/haarg/perl-travis-helper
+   - source perl-travis-helper/init
+   - build-perl
+   - perl -V
    - git config --global user.name "TravisCI"
    - git config --global user.name "TravisCI"
    - git config --global user.email $HOSTNAME":not-for-mail@travis-ci.org"
    - git config --global user.email $HOSTNAME":not-for-mail@travis-ci.org"
 install:
 install:
    - cpanm --quiet --notest --skip-satisfied Dist::Zilla
    - cpanm --quiet --notest --skip-satisfied Dist::Zilla
-   - "dzil authordeps --missing | grep -vP '[^\\w:]' | xargs -n 5 -P 10 cpanm --quiet --notest"
-   - "dzil listdeps   --missing | grep -vP '[^\\w:]' | xargs -n 5 -P 10 cpanm --quiet --notest"
+   - "dzil authordeps          --missing | grep -vP '[^\\w:]' | xargs -n 5 -P 10 cpanm --quiet --notest"
+   - "dzil listdeps   --author --missing | grep -vP '[^\\w:]' | xargs -n 5 -P 10 cpanm --quiet --notest"
 script:
 script:
    - dzil smoke --release --author
    - dzil smoke --release --author

+ 19 - 3
Changes

@@ -1,17 +1,33 @@
 Revision history for Selenium-Remote-Driver
 Revision history for Selenium-Remote-Driver
 
 
-0.2150 10-10-2014
+0.2202 11-26-2014
+        [BUG FIXES]
+        - Generalize error message for invalid finder strategies
+
+0.2201 11-13-2014
+        [BUG FIXES]
+        - Fix redirect handling mishap in RemoteConnection
+
+0.22   11-10-2014
         [NEW FEATURES]
         [NEW FEATURES]
         - Improved error messaging for Saucelabs non-json cases
         - Improved error messaging for Saucelabs non-json cases
-        - Improved error messaging for incorrectly configured chromedrivers
+        - Improved error messaging for malconfigured chromedrivers
+        - #169 Add maximize_window function
+        - #58 Add get_user_agent function
 
 
         [MAINTENAINCE]
         [MAINTENAINCE]
         - Specify minimum compatible version of Moo dep
         - Specify minimum compatible version of Moo dep
         - Make Driver.pm more easily subclassed ( ea68e06, 63e78e3 )
         - Make Driver.pm more easily subclassed ( ea68e06, 63e78e3 )
         - Get TravisCI passing again
         - Get TravisCI passing again
+        - #164 Roll & use our own mocking classes
+        - #152 Gracefully catch more error cases
 
 
         [BREAKING]
         [BREAKING]
-        - get|set_speed subs are no-ops and will be removed in the upcoming release
+        - #161 get|set_speed subs are no-ops and will be removed in
+          the upcoming release
+        - #158 WebElement's drag function is deprecated and will be
+          removed in the upcoming release. Use mouse_move_to_location
+          in the interim
 
 
 0.2102 7-16-2014
 0.2102 7-16-2014
         [NEW FEATURES]
         [NEW FEATURES]

+ 1 - 1
README.md

@@ -1,6 +1,6 @@
 # Selenium::Remote::Driver
 # Selenium::Remote::Driver
 
 
-[![Build Status](https://travis-ci.org/gempesaw/Selenium-Remote-Driver.svg?branch=cpan)](https://travis-ci.org/gempesaw/Selenium-Remote-Driver)
+[![Build Status](https://travis-ci.org/gempesaw/Selenium-Remote-Driver.svg?branch=master)](https://travis-ci.org/gempesaw/Selenium-Remote-Driver)
 
 
 [Selenium WebDriver][wd] is a test tool that allows you to write
 [Selenium WebDriver][wd] is a test tool that allows you to write
 automated web application UI tests in any programming language against
 automated web application UI tests in any programming language against

+ 2 - 1
cpanfile

@@ -32,12 +32,13 @@ requires "warnings" => "0";
 on 'test' => sub {
 on 'test' => sub {
   requires "File::Basename" => "0";
   requires "File::Basename" => "0";
   requires "File::stat" => "0";
   requires "File::stat" => "0";
+  requires "FindBin" => "0";
   requires "IO::Socket::INET" => "0";
   requires "IO::Socket::INET" => "0";
-  requires "LWP::Protocol::PSGI" => "0.04";
   requires "LWP::Simple" => "0";
   requires "LWP::Simple" => "0";
   requires "Test::Exception" => "0";
   requires "Test::Exception" => "0";
   requires "Test::LWP::UserAgent" => "0";
   requires "Test::LWP::UserAgent" => "0";
   requires "Test::More" => "0";
   requires "Test::More" => "0";
+  requires "lib" => "0";
 };
 };
 
 
 on 'configure' => sub {
 on 'configure' => sub {

+ 4 - 5
dist.ini

@@ -1,5 +1,5 @@
 name = Selenium-Remote-Driver
 name = Selenium-Remote-Driver
-version = 0.2150
+version = 0.2202
 author = Aditya Ivaturi <ivaturi@gmail.com>
 author = Aditya Ivaturi <ivaturi@gmail.com>
 author = Daniel Gempesaw <gempesaw@gmail.com>
 author = Daniel Gempesaw <gempesaw@gmail.com>
 author = Luke Closs <cpan@5thplane.com>
 author = Luke Closs <cpan@5thplane.com>
@@ -16,6 +16,9 @@ test_authordeps = 0
 test_deps = 0
 test_deps = 0
 
 
 [Git::Check]
 [Git::Check]
+allow_dirty = dist.ini
+allow_dirty = cpanfile
+allow_dirty = Changes
 [Git::Commit]
 [Git::Commit]
 [Git::Tag]
 [Git::Tag]
 ;[Git::Push]
 ;[Git::Push]
@@ -71,10 +74,6 @@ copy = cpanfile
 perl = 5.010
 perl = 5.010
 Moo = 1.005
 Moo = 1.005
 
 
-[Prereqs / TestRequires]
-; unfortunately this doesn't coerce 0.04, it just sets the minimum.
-LWP::Protocol::PSGI = 0.04
-
 [MetaResources]
 [MetaResources]
 bugtracker.web = https://github.com/gempesaw/Selenium-Remote-Driver/issues
 bugtracker.web = https://github.com/gempesaw/Selenium-Remote-Driver/issues
 repository.type = git
 repository.type = git

+ 5 - 5
lib/Selenium/Remote/Commands.pm

@@ -69,6 +69,11 @@ has '_cmds' => (
                 'url'                => 'session/:sessionId/window/:windowHandle/position',
                 'url'                => 'session/:sessionId/window/:windowHandle/position',
                 'no_content_success' => 0
                 'no_content_success' => 0
             },
             },
+            'maximizeWindow' => {
+                'method'             => 'POST',
+                'url'                => 'session/:sessionId/window/:windowHandle/maximize',
+                'no_content_success' => 1
+            },
             'setWindowSize' => {
             'setWindowSize' => {
                 'method'             => 'POST',
                 'method'             => 'POST',
                 'url'                => 'session/:sessionId/window/:windowHandle/size',
                 'url'                => 'session/:sessionId/window/:windowHandle/size',
@@ -279,11 +284,6 @@ has '_cmds' => (
                 'url'                => 'session/:sessionId/window',
                 'url'                => 'session/:sessionId/window',
                 'no_content_success' => 1
                 'no_content_success' => 1
             },
             },
-            'dragElement' => {
-                'method'             => 'POST',
-                'url'                => 'session/:sessionId/element/:id/drag',
-                'no_content_success' => 1
-            },
             'getElementSize' => {
             'getElementSize' => {
                 'method'             => 'GET',
                 'method'             => 'GET',
                 'url'                => 'session/:sessionId/element/:id/size',
                 'url'                => 'session/:sessionId/element/:id/size',

+ 51 - 32
lib/Selenium/Remote/Driver.pm

@@ -417,30 +417,24 @@ has 'inner_window_size' => (
 
 
 );
 );
 
 
-has 'testing' => (
-    is => 'rw',
-    default => sub { 0 },
-);
-
 sub BUILD {
 sub BUILD {
     my $self = shift;
     my $self = shift;
 
 
+    if ($self->has_desired_capabilities) {
+        $self->new_desired_session( $self->desired_capabilities );
+    }
+    else {
+        # Connect to remote server & establish a new session
+        $self->new_session( $self->extra_capabilities );
+    }
 
 
-        if ($self->has_desired_capabilities) {
-            $self->new_desired_session( $self->desired_capabilities );
-        }
-        else {
-            # Connect to remote server & establish a new session
-            $self->new_session( $self->extra_capabilities );
-        }
-
-        if ( !( defined $self->session_id ) ) {
-            croak "Could not establish a session with the remote server\n";
-        }
-        elsif ($self->has_inner_window_size) {
-            my $size = $self->inner_window_size;
-            $self->set_inner_window_size(@$size);
-        }
+    if ( !( defined $self->session_id ) ) {
+        croak "Could not establish a session with the remote server\n";
+    }
+    elsif ($self->has_inner_window_size) {
+        my $size = $self->inner_window_size;
+        $self->set_inner_window_size(@$size);
+    }
 }
 }
 
 
 sub new_from_caps {
 sub new_from_caps {
@@ -541,14 +535,14 @@ sub _request_new_session {
     $self->remote_conn->check_status();
     $self->remote_conn->check_status();
     # command => 'newSession' to fool the tests of commands implemented
     # command => 'newSession' to fool the tests of commands implemented
     # TODO: rewrite the testing better, this is so fragile.
     # TODO: rewrite the testing better, this is so fragile.
-    my $resource_new_session = { 
+    my $resource_new_session = {
         method => $self->commands->get_method('newSession'),
         method => $self->commands->get_method('newSession'),
         url => $self->commands->get_url('newSession'),
         url => $self->commands->get_url('newSession'),
         no_content_success => $self->commands->get_no_content_success('newSession'),
         no_content_success => $self->commands->get_no_content_success('newSession'),
     };
     };
     my $rc = $self->remote_conn;
     my $rc = $self->remote_conn;
     my $resp = $rc->request(
     my $resp = $rc->request(
-        $resource_new_session, 
+        $resource_new_session,
         $args,
         $args,
     );
     );
     if ( ( defined $resp->{'sessionId'} ) && $resp->{'sessionId'} ne '' ) {
     if ( ( defined $resp->{'sessionId'} ) && $resp->{'sessionId'} ne '' ) {
@@ -556,8 +550,13 @@ sub _request_new_session {
     }
     }
     else {
     else {
         my $error = 'Could not create new session';
         my $error = 'Could not create new session';
-        $error .= ': ' . $resp->{cmd_return}->{message}
-          if exists $resp->{cmd_return}->{message};
+
+        if (ref $resp->{cmd_return} eq 'HASH') {
+            $error .= ': ' . $resp->{cmd_return}->{message};
+        }
+        else {
+            $error .= ': ' . $resp->{cmd_return};
+        }
         croak $error;
         croak $error;
     }
     }
 }
 }
@@ -1588,6 +1587,30 @@ sub set_window_size {
     return $ret ? 1 : 0;
     return $ret ? 1 : 0;
 }
 }
 
 
+=head2 maximize_window
+
+ Description:
+    Maximizes the browser window
+
+ Input:
+    STRING - <optional> - window handle (default is 'current' window)
+
+ Output:
+    BOOLEAN - Success or failure
+
+ Usage:
+    $driver->maximize_window();
+
+=cut
+
+sub maximize_window {
+    my ( $self, $window ) = @_;
+    $window = ( defined $window ) ? $window : 'current';
+    my $res = { 'command' => 'maximizeWindow', 'window_handle' => $window };
+    my $ret = $self->_execute_command( $res );
+    return $ret ? 1 : 0;
+}
+
 =head2 get_all_cookies
 =head2 get_all_cookies
 
 
  Description:
  Description:
@@ -1775,8 +1798,7 @@ sub find_element {
             driver => $self );
             driver => $self );
     }
     }
     else {
     else {
-        croak "Bad method, expected - class, class_name, css, id, link,
-                link_text, partial_link_text, name, tag_name, xpath";
+        croak "Bad method, expected: " . join(', ', keys %{ $self->FINDERS });
     }
     }
 }
 }
 
 
@@ -1843,8 +1865,7 @@ sub find_elements {
         return wantarray? @{$elem_obj_arr} : $elem_obj_arr ;
         return wantarray? @{$elem_obj_arr} : $elem_obj_arr ;
     }
     }
     else {
     else {
-        croak "Bad method, expected - class, class_name, css, id, link,
-                link_text, partial_link_text, name, tag_name, xpath";
+        croak "Bad method, expected: " . join(', ', keys %{ $self->FINDERS });
     }
     }
 }
 }
 
 
@@ -1908,8 +1929,7 @@ sub find_child_element {
             driver => $self );
             driver => $self );
     }
     }
     else {
     else {
-        croak "Bad method, expected - class, class_name, css, id, link,
-                link_text, partial_link_text, name, tag_name, xpath";
+        croak "Bad method, expected: " . join(', ', keys %{ $self->FINDERS });
     }
     }
 }
 }
 
 
@@ -1976,8 +1996,7 @@ sub find_child_elements {
         return wantarray ? @{$elem_obj_arr} : $elem_obj_arr;
         return wantarray ? @{$elem_obj_arr} : $elem_obj_arr;
     }
     }
     else {
     else {
-        croak "Bad method, expected - class, class_name, css, id, link,
-                link_text, partial_link_text, name, tag_name, xpath";
+        croak "Bad method, expected: " . join(', ', keys %{ $self->FINDERS });
     }
     }
 }
 }
 
 

+ 2 - 1
lib/Selenium/Remote/Driver/Firefox/Profile.pm

@@ -162,8 +162,9 @@ directories.
 sub add_extension {
 sub add_extension {
     my ($self, $xpi) = @_;
     my ($self, $xpi) = @_;
 
 
+    croak 'File not found: ' . $xpi unless -e $xpi;
     my $xpi_abs_path = abs_path($xpi);
     my $xpi_abs_path = abs_path($xpi);
-    croak "$xpi_abs_path: extensions must be in .xpi format" unless $xpi_abs_path =~ /\.xpi$/;
+    croak '$xpi_abs_path: extensions must be in .xpi format' unless $xpi_abs_path =~ /\.xpi$/;
 
 
     push (@{$self->{extensions}}, $xpi_abs_path);
     push (@{$self->{extensions}}, $xpi_abs_path);
 }
 }

+ 10 - 10
lib/Selenium/Remote/Mock/Commands.pm

@@ -1,14 +1,14 @@
-package Selenium::Remote::Mock::Commands; 
+package Selenium::Remote::Mock::Commands;
 
 
-# ABSTRACT: utility class to mock Selenium::Remote::Commands 
+# ABSTRACT: utility class to mock Selenium::Remote::Commands
 #
 #
-use Moo; 
+use Moo;
 extends 'Selenium::Remote::Commands';
 extends 'Selenium::Remote::Commands';
 
 
 
 
 # override get_params so we do not rewrite the parameters
 # override get_params so we do not rewrite the parameters
 
 
-sub get_params { 
+sub get_params {
     my $self = shift;
     my $self = shift;
     my $args = shift;
     my $args = shift;
     my $data = {};
     my $data = {};
@@ -17,17 +17,17 @@ sub get_params {
     $data->{'method'} = $self->get_method($command);
     $data->{'method'} = $self->get_method($command);
     $data->{'no_content_success'} = $self->get_no_content_success($command);
     $data->{'no_content_success'} = $self->get_no_content_success($command);
     $data->{'url_params'}  = $args;
     $data->{'url_params'}  = $args;
-    return $data; 
+    return $data;
 }
 }
 
 
-sub get_method_name_from_parameters { 
-    my $self = shift; 
+sub get_method_name_from_parameters {
+    my $self = shift;
     my $params = shift;
     my $params = shift;
     my $method_name = '';
     my $method_name = '';
     my $cmds = $self->get_cmds();
     my $cmds = $self->get_cmds();
-    foreach my $cmd (keys %{$cmds}) { 
-        if (($cmds->{$cmd}->{method} eq $params->{method}) && ($cmds->{$cmd}->{url} eq $params->{url})) { 
-            $method_name = $cmd; 
+    foreach my $cmd (keys %{$cmds}) {
+        if (($cmds->{$cmd}->{method} eq $params->{method}) && ($cmds->{$cmd}->{url} eq $params->{url})) {
+            $method_name = $cmd;
             last;
             last;
         }
         }
     }
     }

+ 58 - 58
lib/Selenium/Remote/Mock/RemoteConnection.pm

@@ -2,12 +2,12 @@ package Selenium::Remote::Mock::RemoteConnection;
 
 
 # ABSTRACT: utility class to mock the responses from Selenium server
 # ABSTRACT: utility class to mock the responses from Selenium server
 
 
-use Moo; 
-use JSON; 
+use Moo;
+use JSON;
 use Carp;
 use Carp;
 use Try::Tiny;
 use Try::Tiny;
-use HTTP::Response; 
-use Data::Dumper; 
+use HTTP::Response;
+use Data::Dumper;
 
 
 extends 'Selenium::Remote::RemoteConnection';
 extends 'Selenium::Remote::RemoteConnection';
 
 
@@ -16,66 +16,66 @@ has 'spec' => (
     default => sub {{}},
     default => sub {{}},
 );
 );
 
 
-has 'mock_cmds' => ( 
-    is => 'ro', 
+has 'mock_cmds' => (
+    is => 'ro',
 );
 );
 
 
-has 'fake_session_id' => ( 
-    is => 'lazy', 
-    builder => sub { 
+has 'fake_session_id' => (
+    is => 'lazy',
+    builder => sub {
         my $id = join '',
         my $id = join '',
         map +( 0 .. 9, 'a' .. 'z', 'A' .. 'Z' )[ rand( 10 + 26 * 2 ) ], 1 .. 50;
         map +( 0 .. 9, 'a' .. 'z', 'A' .. 'Z' )[ rand( 10 + 26 * 2 ) ], 1 .. 50;
         return $id;
         return $id;
     },
     },
 );
 );
 
 
-has 'record' => ( 
-    is => 'ro', 
-    default => sub { 0 } 
+has 'record' => (
+    is => 'ro',
+    default => sub { 0 }
 );
 );
 
 
-has 'replay' => ( 
+has 'replay' => (
     is => 'ro',
     is => 'ro',
 );
 );
 
 
-has 'replay_file' => ( 
+has 'replay_file' => (
     is => 'ro',
     is => 'ro',
 );
 );
 
 
 has 'session_store' => (
 has 'session_store' => (
-    is => 'rw', 
+    is => 'rw',
     default => sub { {} }
     default => sub { {} }
 );
 );
 
 
-has 'session_id' => ( 
+has 'session_id' => (
     is => 'rw',
     is => 'rw',
     default => sub { undef },
     default => sub { undef },
 );
 );
 
 
 sub BUILD {
 sub BUILD {
-    my $self = shift; 
-    croak 'Cannot define replay and record attributes at the same time' if (($self->replay) && ($self->record)); 
-    croak 'replay_file attribute needs to be defined' if (($self->replay) && !($self->replay_file)); 
-    croak 'replay attribute needs to be defined' if (!($self->replay) && ($self->replay_file)); 
+    my $self = shift;
+    croak 'Cannot define replay and record attributes at the same time' if (($self->replay) && ($self->record));
+    croak 'replay_file attribute needs to be defined' if (($self->replay) && !($self->replay_file));
+    croak 'replay attribute needs to be defined' if (!($self->replay) && ($self->replay_file));
     $self->remote_server_addr('localhost');
     $self->remote_server_addr('localhost');
     $self->port('4444');
     $self->port('4444');
-    if ($self->replay) { 
+    if ($self->replay) {
         $self->load_session_store($self->replay_file);
         $self->load_session_store($self->replay_file);
     }
     }
 }
 }
 
 
-sub check_status { 
+sub check_status {
     return;
     return;
 }
 }
 
 
-sub load_session_store { 
-    my $self = shift; 
-    my $file = shift; 
+sub load_session_store {
+    my $self = shift;
+    my $file = shift;
     croak "'$file' is not a valid file" unless (-f $file);
     croak "'$file' is not a valid file" unless (-f $file);
     open (my $fh, '<', $file) or croak  "Opening '$file' failed";
     open (my $fh, '<', $file) or croak  "Opening '$file' failed";
     # here we use a fake session id since we have no way of figuring out
     # here we use a fake session id since we have no way of figuring out
     # which session is good or not
     # which session is good or not
-    local $/ = undef; 
+    local $/ = undef;
 
 
     my $json = JSON->new;
     my $json = JSON->new;
     $json->allow_blessed;
     $json->allow_blessed;
@@ -84,19 +84,19 @@ sub load_session_store {
     $self->session_store($decoded_json);
     $self->session_store($decoded_json);
 }
 }
 
 
-sub dump_session_store { 
-    my $self = shift; 
+sub dump_session_store {
+    my $self = shift;
     my ($file) = @_;
     my ($file) = @_;
     open (my $fh, '>', $file) or croak "Opening '$file' failed";
     open (my $fh, '>', $file) or croak "Opening '$file' failed";
     my $session_store = $self->session_store;
     my $session_store = $self->session_store;
     my $dump = {};
     my $dump = {};
-    foreach my $path (keys %{$session_store}) { 
+    foreach my $path (keys %{$session_store}) {
         $dump->{$path} = $session_store->{$path};
         $dump->{$path} = $session_store->{$path};
     }
     }
     my $json = JSON->new;
     my $json = JSON->new;
     $json->allow_blessed;
     $json->allow_blessed;
     my $json_session = $json->allow_nonref->utf8->pretty->encode($dump);
     my $json_session = $json->allow_nonref->utf8->pretty->encode($dump);
-    print $fh $json_session; 
+    print $fh $json_session;
     close ($fh);
     close ($fh);
 }
 }
 
 
@@ -109,7 +109,7 @@ sub request {
     my $content            = '';
     my $content            = '';
     my $json               = JSON->new;
     my $json               = JSON->new;
     $json->allow_blessed;
     $json->allow_blessed;
-    if ($params) { 
+    if ($params) {
         $content = $json->allow_nonref->utf8->canonical(1)->encode($params);
         $content = $json->allow_nonref->utf8->canonical(1)->encode($params);
     }
     }
     my $url_params = $resource->{url_params};
     my $url_params = $resource->{url_params};
@@ -169,26 +169,26 @@ __END__
 
 
 =head1 DESCRIPTION
 =head1 DESCRIPTION
 
 
-Selenium::Remote::Mock::RemoteConnection is a class to act as a short-circuit or a pass through to the connection to a Selenium Server. 
-Using this class in place of L<Selenium::Remote::RemoteConnection> allows to: 
+Selenium::Remote::Mock::RemoteConnection is a class to act as a short-circuit or a pass through to the connection to a Selenium Server.
+Using this class in place of L<Selenium::Remote::RemoteConnection> allows to:
 
 
 =over
 =over
 
 
 =item *
 =item *
-record interactions with the Selenium Server into a JSON file 
+record interactions with the Selenium Server into a JSON file
 
 
-=item * 
+=item *
 replay recorded interactions from a JSON file to mock answers from the Selenium Server
 replay recorded interactions from a JSON file to mock answers from the Selenium Server
 
 
-=item * 
-mock responses to specific functions 
+=item *
+mock responses to specific functions
 
 
 =back
 =back
 
 
 =head1 SYNOPSIS
 =head1 SYNOPSIS
 
 
-=head2 Record interactions 
-    
+=head2 Record interactions
+
     #!perl
     #!perl
     use strict;
     use strict;
     use warnings;
     use warnings;
@@ -204,7 +204,7 @@ mock responses to specific functions
     my $driver = Selenium::Remote::Driver->new( remote_conn => $mock_connection );
     my $driver = Selenium::Remote::Driver->new( remote_conn => $mock_connection );
 
 
     # always store the session id, as it will become undef once
     # always store the session id, as it will become undef once
-    # $driver->quit is called  
+    # $driver->quit is called
     my $session_id = $driver->session_id;
     my $session_id = $driver->session_id;
 
 
     # do all the selenium things and quit
     # do all the selenium things and quit
@@ -216,10 +216,10 @@ mock responses to specific functions
     $mock_connection->dump_session_store( 'my_record.json' );
     $mock_connection->dump_session_store( 'my_record.json' );
 
 
 
 
-This code, above doing some basic Selenium interactions, will end up generating a JSON file containing all the requests and their responses for your Selenium session. 
-The JSON file looks like this : 
+This code, above doing some basic Selenium interactions, will end up generating a JSON file containing all the requests and their responses for your Selenium session.
+The JSON file looks like this :
 
 
-    { 
+    {
         "HTTP_REQUEST URL {request_parameters}":[ARRAY_OF_RESPONSES]
         "HTTP_REQUEST URL {request_parameters}":[ARRAY_OF_RESPONSES]
         ...
         ...
     }
     }
@@ -233,11 +233,11 @@ The reason why we store array of responses is that the exact same request can be
     use warnings;
     use warnings;
     use Test::More;
     use Test::More;
     use Test::Selenium::Remote::Driver;
     use Test::Selenium::Remote::Driver;
-    use Selenium::Remote::Mock::RemoteConnection; 
+    use Selenium::Remote::Mock::RemoteConnection;
     my $mock_connection_2 =
     my $mock_connection_2 =
       Selenium::Remote::Mock::RemoteConnection->new( replay => 1,
       Selenium::Remote::Mock::RemoteConnection->new( replay => 1,
         replay_file => 'my_record.json' );
         replay_file => 'my_record.json' );
-    # javascript + version parameters added or else it will not work 
+    # javascript + version parameters added or else it will not work
     my $driver =
     my $driver =
       Test::Selenium::Remote::Driver->new( remote_conn => $mock_connection_2, javascript => 1, version => '' );
       Test::Selenium::Remote::Driver->new( remote_conn => $mock_connection_2, javascript => 1, version => '' );
     $driver->get_ok('http://www.google.com');
     $driver->get_ok('http://www.google.com');
@@ -245,15 +245,15 @@ The reason why we store array of responses is that the exact same request can be
     $driver->quit;
     $driver->quit;
     done_testing;
     done_testing;
 
 
-Using the file generated with the recording snippet from the section before, we are able to mock the responses. 
+Using the file generated with the recording snippet from the section before, we are able to mock the responses.
 
 
 Note that there is one small limitation (that I hope to remove in future versions), is that a record generated with L<Selenium::Remote::Driver> is not directly useable with L<Test::Selenium::Remote::Driver>.
 Note that there is one small limitation (that I hope to remove in future versions), is that a record generated with L<Selenium::Remote::Driver> is not directly useable with L<Test::Selenium::Remote::Driver>.
-This is mainly because the way the two instances are created are a bit different, which leads to different requests made, for creating a session for instance. 
+This is mainly because the way the two instances are created are a bit different, which leads to different requests made, for creating a session for instance.
 For now, what works for sure is recording and replaying from the same class.
 For now, what works for sure is recording and replaying from the same class.
 
 
 =head2 Mock responses
 =head2 Mock responses
 
 
-    
+
     #!perl
     #!perl
     use Test::More;
     use Test::More;
     use Test::Selenium::Remote::Driver;
     use Test::Selenium::Remote::Driver;
@@ -285,26 +285,26 @@ For now, what works for sure is recording and replaying from the same class.
 
 
     done_testing();
     done_testing();
 
 
-Mocking responses by hand requires a more advanced knowledge of the underlying implementation of L<Selenium::Remote::Driver>. 
+Mocking responses by hand requires a more advanced knowledge of the underlying implementation of L<Selenium::Remote::Driver>.
 What we mock here is the processed response that will be returned by L<Selenium::Remote::RemoteConnection> to '_execute_command' call.
 What we mock here is the processed response that will be returned by L<Selenium::Remote::RemoteConnection> to '_execute_command' call.
-To accomplish this we need : 
+To accomplish this we need :
 
 
 =over
 =over
 
 
 =item *
 =item *
 a spec: a HASHREF which keys are the name of the methods we want to mock. Note that those keys should also be valid keys from the _cmds attribute in L<Selenium::Remote::Command>.
 a spec: a HASHREF which keys are the name of the methods we want to mock. Note that those keys should also be valid keys from the _cmds attribute in L<Selenium::Remote::Command>.
-The value of each key is a sub which will be given two parameters: 
+The value of each key is a sub which will be given two parameters:
 
 
-=over 
+=over
 
 
-=item * 
-$url_params : the values that should have been replaced in the URL 
+=item *
+$url_params : the values that should have been replaced in the URL
 For instance, on the example above, it would have been:
 For instance, on the example above, it would have been:
     { session_id => 'some_session_id'}
     { session_id => 'some_session_id'}
 
 
-=item * 
+=item *
 $params : the original parameters of the request.
 $params : the original parameters of the request.
-On the example above it would have been: 
+On the example above it would have been:
     { value => 'q', using => 'xpath'}
     { value => 'q', using => 'xpath'}
 
 
 
 
@@ -312,12 +312,12 @@ On the example above it would have been:
 
 
 The sub used as a value in the spec is not expected to return anything, so you have to craft very carefully what you return so that it will produce the expected result.
 The sub used as a value in the spec is not expected to return anything, so you have to craft very carefully what you return so that it will produce the expected result.
 
 
-=item * 
+=item *
 a mock_cmd: a L<Selenium::Remote::Mock::Commands> object. This is used mainly to hijack the normal commands so that placeholders do not get replaced in the URLs.
 a mock_cmd: a L<Selenium::Remote::Mock::Commands> object. This is used mainly to hijack the normal commands so that placeholders do not get replaced in the URLs.
 
 
 =back
 =back
 
 
-=head1 BUGS 
+=head1 BUGS
 
 
 This code is really early alpha, so its API might change. Use with caution !
 This code is really early alpha, so its API might change. Use with caution !
 
 

+ 7 - 4
lib/Selenium/Remote/RemoteConnection.pm

@@ -38,7 +38,7 @@ has 'error_handler' => (
 
 
 
 
 
 
-sub check_status { 
+sub check_status {
     my $self = shift;
     my $self = shift;
     my $status;
     my $status;
     try {
     try {
@@ -57,7 +57,6 @@ sub check_status {
     unless ($status->{cmd_status} eq 'OK') {
     unless ($status->{cmd_status} eq 'OK') {
         croak "Selenium server did not return proper status";
         croak "Selenium server did not return proper status";
     }
     }
-    
 }
 }
 
 
 
 
@@ -105,7 +104,7 @@ sub request {
     $header->header('Accept' => 'application/json');
     $header->header('Accept' => 'application/json');
     my $request = HTTP::Request->new($method, $fullurl, $header, $content);
     my $request = HTTP::Request->new($method, $fullurl, $header, $content);
     my $response = $self->ua->request($request);
     my $response = $self->ua->request($request);
-    if ($dont_process_response) { 
+    if ($dont_process_response) {
         return $response;
         return $response;
     }
     }
     return $self->_process_response($response, $no_content_success);
     return $self->_process_response($response, $no_content_success);
@@ -117,7 +116,11 @@ sub _process_response {
     my $json = JSON->new;
     my $json = JSON->new;
 
 
     if ($response->is_redirect) {
     if ($response->is_redirect) {
-        return $self->request('GET', $response->header('location'));
+        my $redirect = {
+            method => 'GET',
+            url    => $response->header('location')
+        };
+        return $self->request($redirect);
     }
     }
     else {
     else {
         my $decoded_json = undef;
         my $decoded_json = undef;

+ 17 - 11
lib/Selenium/Remote/WebElement.pm

@@ -3,7 +3,7 @@ package Selenium::Remote::WebElement;
 # ABSTRACT: Representation of an HTML Element used by Selenium Remote Driver
 # ABSTRACT: Representation of an HTML Element used by Selenium Remote Driver
 
 
 use Moo;
 use Moo;
-use Carp qw(croak);
+use Carp qw(carp croak);
 
 
 =head1 DESCRIPTION
 =head1 DESCRIPTION
 
 
@@ -356,19 +356,25 @@ sub is_hidden {
  Usage:
  Usage:
     $elem->drag(216,158);
     $elem->drag(216,158);
 
 
+ Note: DEPRECATED - drag is no longer available in the
+ JSONWireProtocol. We are working on an ActionsChains implementation,
+ but drag and drop doesn't currently work on the Webdriver side for
+ HTML5 pages. For reference, see:
+
+ http://elementalselenium.com/tips/39-drag-and-drop
+ https://gist.github.com/rcorreia/2362544
+
+ Check out the mouse_move_to_location, button_down, and button_up
+ functions on Selenium::Remote::Driver.
+
+ https://metacpan.org/pod/Selenium::Remote::Driver#mouse_move_to_location
+ https://metacpan.org/pod/Selenium::Remote::Driver#button_down
+ https://metacpan.org/pod/Selenium::Remote::Driver#button_up
+
 =cut
 =cut
 
 
 sub drag {
 sub drag {
-    my ( $self, $x, $y ) = @_;
-    if ( ( not defined $x ) || ( not defined $y ) ) {
-        croak 'X & Y pixel coordinates not provided';
-    }
-    my $res = { 'command' => 'dragElement', 'id' => $self->id };
-    my $params = {
-        'x' => $x,
-        'y' => $y,
-    };
-    return $self->_execute_command( $res, $params );
+    carp 'drag is no longer available in the JSONWireProtocol and will be removed in the next version of this module';
 }
 }
 
 
 =head2 get_size
 =head2 get_size

+ 21 - 47
t/01-driver.t

@@ -10,30 +10,14 @@ use Selenium::Remote::Driver;
 use Selenium::Remote::Mock::Commands;
 use Selenium::Remote::Mock::Commands;
 use Selenium::Remote::Mock::RemoteConnection;
 use Selenium::Remote::Mock::RemoteConnection;
 
 
+use FindBin;
+use lib $FindBin::Bin . '/lib';
+use TestHarness;
 
 
-my $record = (defined $ENV{'WD_MOCKING_RECORD'} && ($ENV{'WD_MOCKING_RECORD'}==1))?1:0;
-my $os  = $^O;
-if ($os =~ m/(aix|freebsd|openbsd|sunos|solaris)/) {
-    $os = 'linux';
-}
-my %selenium_args = ( 
-    browser_name => 'firefox'
+my $harness = TestHarness->new(
+    this_file => $FindBin::Script
 );
 );
-
-
-my $mock_file = "01-driver-mock-$os.json";
-if (!$record && !(-e "t/mock-recordings/$mock_file")) {
-    plan skip_all => "Mocking of tests is not been enabled for this platform";
-}
-
-if ($record) { 
-    $selenium_args{remote_conn} = Selenium::Remote::Mock::RemoteConnection->new(record => 1);
-}
-else { 
-    $selenium_args{remote_conn} =
-      Selenium::Remote::Mock::RemoteConnection->new( replay => 1,
-        replay_file => "t/mock-recordings/$mock_file" );
-}
+my %selenium_args = %{ $harness->base_caps };
 
 
 my $driver = Selenium::Remote::Driver->new(%selenium_args);
 my $driver = Selenium::Remote::Driver->new(%selenium_args);
 my $website = 'http://localhost:63636';
 my $website = 'http://localhost:63636';
@@ -181,7 +165,6 @@ WINDOW: {
     is(ref $ret, 'ARRAY', 'Received all window handles');
     is(ref $ret, 'ARRAY', 'Received all window handles');
     $ret = $driver->set_window_position(100,100);
     $ret = $driver->set_window_position(100,100);
     is($ret, 1, 'Set the window position to 100, 100');
     is($ret, 1, 'Set the window position to 100, 100');
-    $driver->pause(500);
     $ret = $driver->get_window_position();
     $ret = $driver->get_window_position();
     is ($ret->{'x'}, 100, 'Got the right X Co-ordinate');
     is ($ret->{'x'}, 100, 'Got the right X Co-ordinate');
     is ($ret->{'y'}, 100, 'Got the right Y Co-ordinate');
     is ($ret->{'y'}, 100, 'Got the right Y Co-ordinate');
@@ -190,6 +173,17 @@ WINDOW: {
     $ret = $driver->get_window_size();
     $ret = $driver->get_window_size();
     is ($ret->{'height'}, 640, 'Got the right height');
     is ($ret->{'height'}, 640, 'Got the right height');
     is ($ret->{'width'}, 480, 'Got the right width');
     is ($ret->{'width'}, 480, 'Got the right width');
+    $ret = $driver->maximize_window();
+    is ($ret, 1, "Got confirmation from maximize");
+
+  SKIP: {
+        skip 'headless browsers don\'t get maximized', 2
+          unless $^O =~ /darwin|MSWin32/;
+        $ret = $driver->get_window_size();
+        ok ($ret->{'height'} > 640, 'Height has increased');
+        ok ($ret->{'width'} > 480, 'Width has increased');
+    }
+
     $ret = $driver->get_page_source();
     $ret = $driver->get_page_source();
     ok($ret =~ m/^<html/i, 'Received page source');
     ok($ret =~ m/^<html/i, 'Received page source');
     eval {$driver->set_implicit_wait_timeout(20001);};
     eval {$driver->set_implicit_wait_timeout(20001);};
@@ -259,7 +253,7 @@ FIND: {
       . " at " . __FILE__ . " line " . (__LINE__+1);
       . " at " . __FILE__ . " line " . (__LINE__+1);
     eval { $driver->find_element("element_that_doesnt_exist","id"); };
     eval { $driver->find_element("element_that_doesnt_exist","id"); };
     chomp $@;
     chomp $@;
-    is($@,$expected_err.".","find_element croaks properly");
+    like($@,qr/$expected_err/,"find_element croaks properly");
     my $elems = $driver->find_elements("//input[\@id='checky']");
     my $elems = $driver->find_elements("//input[\@id='checky']");
     is(scalar(@$elems),1, 'Got an arrayref of WebElements');
     is(scalar(@$elems),1, 'Got an arrayref of WebElements');
     my @array_elems = $driver->find_elements("//input[\@id='checky']");
     my @array_elems = $driver->find_elements("//input[\@id='checky']");
@@ -340,7 +334,7 @@ PAUSE: {
 }
 }
 
 
 AUTO_CLOSE: {
 AUTO_CLOSE: {
-    my %stay_open_selenium_args = %selenium_args; 
+    my %stay_open_selenium_args = %selenium_args;
     $stay_open_selenium_args{auto_close} = 0;
     $stay_open_selenium_args{auto_close} = 0;
     my $stayOpen = Selenium::Remote::Driver->new(
     my $stayOpen = Selenium::Remote::Driver->new(
         %stay_open_selenium_args
         %stay_open_selenium_args
@@ -414,9 +408,9 @@ BASE_URL: {
                 spec => {
                 spec => {
                     get =>
                     get =>
                       sub { my ( undef, $params ) = @_; return $params->{url} }
                       sub { my ( undef, $params ) = @_; return $params->{url} }
-                },
+                  },
                 mock_cmds => $mock_commands
                 mock_cmds => $mock_commands
-              ),
+            ),
             commands => $mock_commands,
             commands => $mock_commands,
         );
         );
         my $got = $base_url_driver->get($test->{url});
         my $got = $base_url_driver->get($test->{url});
@@ -461,24 +455,4 @@ QUIT: {
     ok((not defined $driver->{'session_id'}), 'Killed the remote session');
     ok((not defined $driver->{'session_id'}), 'Killed the remote session');
 }
 }
 
 
-NO_SERVER_ERROR_MESSAGE: {
-    my $unused_port = do {
-        my $l = IO::Socket::INET->new(
-            Listen    => 5,
-            LocalHost => '127.0.0.1',
-            LocalPort => 0,
-            Proto     => 'tcp',
-            ReuseAddr => 1,
-        ) or die $!;
-        $l->sockport;
-    };
-    eval {
-        my $sel = Selenium::Remote::Driver->new(port => $unused_port);
-    };
-    unlike($@, qr/Use of uninitialized value/, "Error message for no server at host/port combination is helpful");
-}
-if ($record) { 
-    $driver->remote_conn->dump_session_store("t/mock-recordings/$mock_file");
-}
-
 done_testing;
 done_testing;

+ 7 - 25
t/02-webelement.t

@@ -5,28 +5,14 @@ use Test::More;
 use Selenium::Remote::Driver;
 use Selenium::Remote::Driver;
 use Selenium::Remote::Mock::RemoteConnection;
 use Selenium::Remote::Mock::RemoteConnection;
 
 
+use FindBin;
+use lib $FindBin::Bin . '/lib';
+use TestHarness;
 
 
-
-my $record = (defined $ENV{'WD_MOCKING_RECORD'} && ($ENV{'WD_MOCKING_RECORD'}==1))?1:0;
-my $os  = $^O;
-if ($os =~ m/(aix|freebsd|openbsd|sunos|solaris)/) {
-    $os = 'linux';
-}
-my $mock_file = "02-webelement-mock-$os.json";
-if (!$record && !(-e "t/mock-recordings/$mock_file")) {
-    plan skip_all => "Mocking of tests is not been enabled for this platform";
-}
-my %selenium_args = ( 
-    browser_name => 'firefox'
+my $harness = TestHarness->new(
+    this_file => $FindBin::Script
 );
 );
-if ($record) { 
-    $selenium_args{remote_conn} = Selenium::Remote::Mock::RemoteConnection->new(record => 1);
-}
-else { 
-    $selenium_args{remote_conn} =
-      Selenium::Remote::Mock::RemoteConnection->new( replay => 1,
-        replay_file => "t/mock-recordings/$mock_file" );
-}
+my %selenium_args = %{ $harness->base_caps };
 
 
 my $driver = Selenium::Remote::Driver->new(%selenium_args);
 my $driver = Selenium::Remote::Driver->new(%selenium_args);
 my $website = 'http://localhost:63636';
 my $website = 'http://localhost:63636';
@@ -105,7 +91,7 @@ IMAGES: {
     my $y = $ret->{'y'};
     my $y = $ret->{'y'};
   TODO: {
   TODO: {
         local $TODO = "drag doesn't appear to be working currently in selenium server";
         local $TODO = "drag doesn't appear to be working currently in selenium server";
-        eval {$ret = $elem->drag(200,200);};
+        $ret = $elem->drag(200,200);
         $ret = $elem->get_element_location();
         $ret = $elem->get_element_location();
         is($ret->{'x'}, ($x+200), 'Moved to new x coord');
         is($ret->{'x'}, ($x+200), 'Moved to new x coord');
         is($ret->{'y'}, ($y+200), 'Moved to new y coord');
         is($ret->{'y'}, ($y+200), 'Moved to new y coord');
@@ -128,8 +114,4 @@ QUIT: {
     ok((not defined $driver->{'session_id'}), 'Killed the remote session');
     ok((not defined $driver->{'session_id'}), 'Killed the remote session');
 }
 }
 
 
-if ($record) { 
-    $driver->remote_conn->dump_session_store("t/mock-recordings/$mock_file");
-}
-
 done_testing;
 done_testing;

+ 0 - 1
t/03-spec-coverage.t

@@ -33,7 +33,6 @@ my $todo_list = {
    'POST session/:sessionId/window/:windowHandle/position' => 1,
    'POST session/:sessionId/window/:windowHandle/position' => 1,
    'GET session/:sessionId/window/:windowHandle/position'  => 1,
    'GET session/:sessionId/window/:windowHandle/position'  => 1,
    'POST session/:sessionId/keys'                          => 1,
    'POST session/:sessionId/keys'                          => 1,
-   'POST session/:sessionId/window/:windowHandle/maximize' => 1,
    'GET session/:sessionId/location'                       => 1,
    'GET session/:sessionId/location'                       => 1,
    'POST session/:sessionId/location'                      => 1,
    'POST session/:sessionId/location'                      => 1,
    'GET session/:sessionId/local_storage'                  => 1,
    'GET session/:sessionId/local_storage'                  => 1,

+ 8 - 27
t/10-switch-to-window.t

@@ -6,33 +6,19 @@ use Test::More;
 use Test::Selenium::Remote::Driver;
 use Test::Selenium::Remote::Driver;
 use Selenium::Remote::Mock::RemoteConnection;
 use Selenium::Remote::Mock::RemoteConnection;
 
 
-my $record = (defined $ENV{'WD_MOCKING_RECORD'} && ($ENV{'WD_MOCKING_RECORD'}==1))?1:0;
-my $os  = $^O;
-if ($os =~ m/(aix|freebsd|openbsd|sunos|solaris)/) {
-    $os = 'linux';
-}
+use FindBin;
+use lib $FindBin::Bin . '/lib';
+use TestHarness;
 
 
-my %selenium_args = ( 
-    browser_name => 'firefox',
+my $harness = TestHarness->new(
+    this_file => $FindBin::Script
+);
+my %selenium_args = (
     default_finder => 'css',
     default_finder => 'css',
     javascript     => 1,
     javascript     => 1,
+    %{ $harness->base_caps }
 );
 );
 
 
-my $mock_file = "10-switch-to-window-mock-$os.json";
-if (!$record && !(-e "t/mock-recordings/$mock_file")) {
-    plan skip_all => "Mocking of tests is not been enabled for this platform";
-}
-
-if ($record) { 
-    $selenium_args{remote_conn} = Selenium::Remote::Mock::RemoteConnection->new(record => 1);
-}
-else { 
-    $selenium_args{remote_conn} =
-      Selenium::Remote::Mock::RemoteConnection->new( replay => 1,
-        replay_file => "t/mock-recordings/$mock_file" );
-}
-
-
 plan tests => 9;
 plan tests => 9;
 
 
 my $s = Test::Selenium::Remote::Driver->new(
 my $s = Test::Selenium::Remote::Driver->new(
@@ -58,7 +44,6 @@ my $handles = $s->get_window_handles;
 is scalar(@$handles), 2;
 is scalar(@$handles), 2;
 # We don't assume any order in the @$handles array:
 # We don't assume any order in the @$handles array:
 my $cpan_handle = $perl_handle eq $handles->[0] ? $handles->[1] : $handles->[0];
 my $cpan_handle = $perl_handle eq $handles->[0] ? $handles->[1] : $handles->[0];
-diag explain $handles;
 
 
 $s->switch_to_window($cpan_handle);
 $s->switch_to_window($cpan_handle);
 $s->title_is($cpan_title);
 $s->title_is($cpan_title);
@@ -71,7 +56,3 @@ $s->title_is($cpan_title);
 
 
 $s->switch_to_window('perlorg');
 $s->switch_to_window('perlorg');
 $s->title_is($perl_title);
 $s->title_is($perl_title);
-
-if ($record) { 
-    $s->remote_conn->dump_session_store("t/mock-recordings/$mock_file");
-}

+ 36 - 53
t/Firefox-Profile.t

@@ -13,40 +13,27 @@ use JSON;
 use Selenium::Remote::Mock::RemoteConnection;
 use Selenium::Remote::Mock::RemoteConnection;
 use Selenium::Remote::Driver::Firefox::Profile;
 use Selenium::Remote::Driver::Firefox::Profile;
 
 
+use FindBin;
+use lib $FindBin::Bin . '/lib';
+use TestHarness;
 
 
-my $record = (defined $ENV{'WD_MOCKING_RECORD'} && ($ENV{'WD_MOCKING_RECORD'}==1))?1:0;
-my $os  = $^O;
-if ($os =~ m/(aix|freebsd|openbsd|sunos|solaris)/) {
-    $os = 'linux';
-}
-my $mock_file = "firefox-profile-mock-$os.json";
-if (!$record && !(-e "t/mock-recordings/$mock_file")) {
-    plan skip_all => "Mocking of tests is not been enabled for this platform";
-}
-
-my %selenium_args = ( 
-    browser_name => 'firefox'
+my $harness = TestHarness->new(
+    this_file => $FindBin::Script
 );
 );
-if ($record) { 
-    $selenium_args{remote_conn} = Selenium::Remote::Mock::RemoteConnection->new(record => 1);
-}
-else { 
-    $selenium_args{remote_conn} =
-      Selenium::Remote::Mock::RemoteConnection->new( replay => 1,
-        replay_file => "t/mock-recordings/$mock_file" );
-}
+my %selenium_args = %{ $harness->base_caps };
 
 
+my $fixture_dir = $FindBin::Bin . '/www/';
 
 
 CUSTOM_EXTENSION_LOADED: {
 CUSTOM_EXTENSION_LOADED: {
     my $profile = Selenium::Remote::Driver::Firefox::Profile->new;
     my $profile = Selenium::Remote::Driver::Firefox::Profile->new;
     my $website = 'http://localhost:63636';
     my $website = 'http://localhost:63636';
-    my $mock_encoded_profile = "t/www/encoded_profile.b64";
+    my $mock_encoded_profile = $fixture_dir . 'encoded_profile.b64';
     my $encoded;
     my $encoded;
 
 
     # Set this to true to re-encode the profile. This should not need
     # Set this to true to re-encode the profile. This should not need
     # to happen often.
     # to happen often.
     my $create_new_profile = 0;
     my $create_new_profile = 0;
-    if ($record && $create_new_profile) {
+    if ($create_new_profile) {
         $profile->set_preference(
         $profile->set_preference(
             'browser.startup.homepage' => $website
             'browser.startup.homepage' => $website
         );
         );
@@ -61,7 +48,7 @@ CUSTOM_EXTENSION_LOADED: {
         #     contentScript: 'document.body.innerHTML = ' +
         #     contentScript: 'document.body.innerHTML = ' +
         #         ' "<h1>Page matches ruleset</h1>";'
         #         ' "<h1>Page matches ruleset</h1>";'
         # });
         # });
-        $profile->add_extension('t/www/redisplay.xpi');
+        $profile->add_extension($fixture_dir . 'redisplay.xpi');
 
 
         $encoded = $profile->_encode;
         $encoded = $profile->_encode;
 
 
@@ -74,15 +61,17 @@ CUSTOM_EXTENSION_LOADED: {
         $encoded = do {local $/ = undef; <$fh>};
         $encoded = do {local $/ = undef; <$fh>};
         close ($fh);
         close ($fh);
     }
     }
-    my %driver_args = %selenium_args; 
+    my %driver_args = %selenium_args;
     $driver_args{extra_capabilities} = { firefox_profile => $encoded };
     $driver_args{extra_capabilities} = { firefox_profile => $encoded };
     my $driver = Selenium::Remote::Driver->new(%driver_args);
     my $driver = Selenium::Remote::Driver->new(%driver_args);
 
 
     ok(defined $driver, "made a driver without dying");
     ok(defined $driver, "made a driver without dying");
 
 
-    # the initial automatic homepage load found in the preference
-    # 'browser.startup.homepage' isn't blocking, so we need to wait
-    # until the page is loaded (when we can find elements)
+    # We don't have to `$driver->get` because our extension should do
+    # it for us. However, the initial automatic homepage load found in
+    # the preference 'browser.startup.homepage' isn't blocking, so we
+    # need to wait until the page is loaded (when we can find
+    # elements)
     $driver->set_implicit_wait_timeout(30000);
     $driver->set_implicit_wait_timeout(30000);
     $driver->find_element("h1", "tag_name");
     $driver->find_element("h1", "tag_name");
     cmp_ok($driver->get_current_url, '=~', qr/localhost/i,
     cmp_ok($driver->get_current_url, '=~', qr/localhost/i,
@@ -167,33 +156,27 @@ PREFERENCES: {
 
 
 CROAKING: {
 CROAKING: {
     my $profile = Selenium::Remote::Driver::Firefox::Profile->new;
     my $profile = Selenium::Remote::Driver::Firefox::Profile->new;
-    {
-        eval {
-            $profile->add_extension('t/00-load.t');
-        };
-        cmp_ok($@, '=~', qr/xpi format/i, "caught invalid extension filetype");
-    }
 
 
-    {
-        eval {
-            $profile->add_extension('t/www/invalid-extension.xpi');
-            my $test = $profile->_encode;
-        };
-        ok($@ =~ /install\.rdf/i, "caught invalid extension structure");
-    }
+    eval { $profile->add_extension('gibberish'); };
+    cmp_ok($@, '=~', qr/File not found/i, 'throws on missing file');
 
 
-    {
-        eval {
-            my %driver_args = %selenium_args;
-            $driver_args{firefox_profile} = 'clearly invalid';
-            my $croakingDriver = Selenium::Remote::Driver->new(
-                %driver_args
-            );
-        };
-        ok ($@ =~ /coercion.*failed/, "caught invalid extension in driver constructor");
-    }
-}
-if ($record) { 
-    $selenium_args{remote_conn}->dump_session_store("t/mock-recordings/$mock_file");
+    eval { $profile->add_extension($FindBin::Bin . '/00-load.t'); };
+    cmp_ok($@, '=~', qr/xpi format/i, "caught invalid extension filetype");
+
+    eval {
+        $profile->add_extension($fixture_dir . 'invalid-extension.xpi') ;
+        $profile->_encode;
+    };
+    ok($@ =~ /install\.rdf/i, "caught invalid extension structure");
+
+    eval {
+        my %driver_args = %selenium_args;
+        $driver_args{firefox_profile} = 'clearly invalid';
+        my $croakingDriver = Selenium::Remote::Driver->new(
+            %driver_args
+        );
+    };
+    ok ($@ =~ /coercion.*failed/, "caught invalid extension in driver constructor");
 }
 }
+
 done_testing;
 done_testing;

+ 39 - 0
t/Remote-Connection.t

@@ -0,0 +1,39 @@
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+use Test::More;
+use Test::Exception;
+use Test::LWP::UserAgent;
+
+BEGIN: {
+    unless (use_ok('Selenium::Remote::RemoteConnection')) {
+        BAIL_OUT("Couldn't load Selenium::Remote::RemoteConnection");
+        exit;
+    }
+}
+
+REDIRECT: {
+    my $tua = Test::LWP::UserAgent->new(
+        max_redirect => 0
+    );
+
+    $tua->map_response(qr/redirect/, HTTP::Response->new(303, undef, ['Location' => 'http://localhost/elsewhere']));
+    $tua->map_response(qr/elsewhere/, HTTP::Response->new(200, 'OK', undef, ''));
+
+    my $conn = Selenium::Remote::RemoteConnection->new(
+        remote_server_addr => 'localhost',
+        port => '',
+        ua => $tua
+    );
+
+    my $redirect_endpoint = {
+        method => 'GET',
+        url => 'http://localhost/redirect'
+    };
+
+    lives_ok(sub { $conn->request($redirect_endpoint) }, '303 redirects no longer kill us');
+}
+
+
+done_testing;

+ 6 - 27
t/Test-Selenium-Remote-Driver-google.t

@@ -5,30 +5,14 @@ use Test::More;
 use Test::Selenium::Remote::Driver;
 use Test::Selenium::Remote::Driver;
 use Selenium::Remote::Mock::RemoteConnection;
 use Selenium::Remote::Mock::RemoteConnection;
 
 
-my $record = (defined $ENV{'WD_MOCKING_RECORD'} && ($ENV{'WD_MOCKING_RECORD'}==1))?1:0;
-my $os  = $^O;
-if ($os =~ m/(aix|freebsd|openbsd|sunos|solaris)/) {
-    $os = 'linux';
-}
+use FindBin;
+use lib $FindBin::Bin . '/lib';
+use TestHarness;
 
 
-my %selenium_args = ( 
-    browser_name => 'firefox',
-    javascript => 1
+my $harness = TestHarness->new(
+    this_file => $FindBin::Script
 );
 );
-
-my $mock_file = "test-selenium-remote-driver-google-$os.json";
-if (!$record && !(-e "t/mock-recordings/$mock_file")) {
-    plan skip_all => "Mocking of tests is not been enabled for this platform";
-}
-
-if ($record) { 
-    $selenium_args{remote_conn} = Selenium::Remote::Mock::RemoteConnection->new(record => 1);
-}
-else { 
-    $selenium_args{remote_conn} =
-      Selenium::Remote::Mock::RemoteConnection->new( replay => 1,
-        replay_file => "t/mock-recordings/$mock_file" );
-}
+my %selenium_args = %{ $harness->base_caps };
 
 
 # Try to find
 # Try to find
 my $t = Test::Selenium::Remote::Driver->new(
 my $t = Test::Selenium::Remote::Driver->new(
@@ -38,9 +22,4 @@ $t->get_ok('http://www.google.com');
 $t->title_like(qr/Google/);
 $t->title_like(qr/Google/);
 $t->body_like(qr/Google/);
 $t->body_like(qr/Google/);
 
 
-if ($record) { 
-    $t->remote_conn->dump_session_store("t/mock-recordings/$mock_file");
-}
-
-
 done_testing();
 done_testing();

+ 2 - 2
t/Test-Selenium-Remote-WebElement.t

@@ -15,7 +15,7 @@ foreach my $k (
       $spec->{$k} = sub { return { status => 'OK', return => 1 }};
       $spec->{$k} = sub { return { status => 'OK', return => 1 }};
 }
 }
 
 
-$spec->{getElementTagName} = sub { return { status => 'OK', return => 'iframe' }}; 
+$spec->{getElementTagName} = sub { return { status => 'OK', return => 'iframe' }};
 $spec->{getElementValue} = sub { return { status => 'OK', return => 'my_value' }};
 $spec->{getElementValue} = sub { return { status => 'OK', return => 'my_value' }};
 $spec->{getElementText} = sub { return { status => 'OK', return => "my_text\nis fantastic" }};
 $spec->{getElementText} = sub { return { status => 'OK', return => "my_text\nis fantastic" }};
 $spec->{getElementAttribute}  = sub { my @args = @_; my $name = $args[0]->{name};  return { status => 'OK', return => "my_$name" }};
 $spec->{getElementAttribute}  = sub { my @args = @_; my $name = $args[0]->{name};  return { status => 'OK', return => "my_$name" }};
@@ -36,7 +36,7 @@ $successful_element->is_enabled_ok;
 $successful_element->is_displayed_ok;
 $successful_element->is_displayed_ok;
 $successful_element->send_keys_ok('Hello World');
 $successful_element->send_keys_ok('Hello World');
 $successful_element->tag_name_is( 'iframe', 'we got an iframe tag' );
 $successful_element->tag_name_is( 'iframe', 'we got an iframe tag' );
-$successful_element->tag_name_isnt( 'BOOM', 'tag name is not boom' ); 
+$successful_element->tag_name_isnt( 'BOOM', 'tag name is not boom' );
 $successful_element->tag_name_unlike( qr/BOOM/, "tag_name doesn't match BOOM" );
 $successful_element->tag_name_unlike( qr/BOOM/, "tag_name doesn't match BOOM" );
 $successful_element->value_is( 'my_value', 'Got an my_value value?' );
 $successful_element->value_is( 'my_value', 'Got an my_value value?' );
 $successful_element->value_isnt( 'BOOM', 'Not BOOM.' );
 $successful_element->value_isnt( 'BOOM', 'Not BOOM.' );

+ 42 - 37
t/bin/record.pl

@@ -2,53 +2,53 @@
 
 
 use strict;
 use strict;
 use warnings;
 use warnings;
-use Cwd qw/abs_path/;
 
 
-my $this_file = abs_path(__FILE__);
-my $srd_folder = $this_file;
-$srd_folder =~ s/t\/bin\/record\.pl//;
+use Cwd qw/abs_path/;
+use FindBin;
+# We can only dzil from the root of the repository.
+my $this_folder = $FindBin::Bin . '/../../'; # t/bin/../../
+my $repo_root = abs_path($this_folder) . '/';
 
 
-resetEnv();
-startServer();
+reset_env();
+start_server();
+output_linux_help();
 
 
-print 'Cleaning...and building...
-';
-print `cd $srd_folder && dzil build`;
+my $built_lib = find_built_lib();
+my $export = $^O eq 'MSWin32' ? 'set' : 'export';
+my $wait = $^O eq 'MSWin32' ? 'START /WAIT' : '';
+my $prove_opts = '-I' . $built_lib .' -j9 -r --verbose --trap --merge --state=save,slow';
+print `$export WD_MOCKING_RECORD=1 && cd $repo_root && prove $prove_opts t/`;
+reset_env();
 
 
-if ($^O eq 'linux') {
-    print "Headless and need a webdriver server started? Try\n\n\tDISPLAY=:1 xvfb-run --auto-servernum java -jar /usr/lib/node_modules/protractor/selenium/selenium-server-standalone-2.42.2.jar\n\n";
+sub find_built_lib {
+    my $built_lib = glob($repo_root . 'Selenium-Remote-Driver-*/lib');
+    if (not defined $built_lib) {
+        print 'Building a dist.' . "\n";
+        print `cd $repo_root && dzil build`;
+    }
+    # If built_lib wasn't around in the first place, we'll have to glob
+    # for it again.
+    $built_lib ||= glob($repo_root . 'Selenium-Remote-Driver-*/lib');
+    return $built_lib;
 }
 }
 
 
-my @files = map {
-    $srd_folder . $_
-} (
-    't/01-driver.t',
-    't/02-webelement.t',
-    't/Firefox-Profile.t'
-);
-
-my $srdLib = glob($srd_folder . 'Selenium-Remote-Driver*/lib');
-my $tLib = glob($srd_folder . 'Selenium-Remote-Driver*');
-my $executeTests = join( ' && ', map {
-    'perl -I' . $srdLib
-      . ' -I' . $tLib
-      . ' ' . $_
-  } @files);
-
-my $export = $^O eq 'MSWin32' ? 'set' : 'export';
-print `$export WD_MOCKING_RECORD=1 && $executeTests`;
-resetEnv();
+sub output_linux_help {
+    if ($^O eq 'linux') {
+        print "Headless and need a webdriver server started? Try\n\n\tDISPLAY=:1 xvfb-run --auto-servernum java -jar /usr/lib/node_modules/protractor/selenium/selenium-server-standalone-*.jar\n\n";
+    }
+}
 
 
-sub startServer {
+sub start_server {
     if ($^O eq 'MSWin32') {
     if ($^O eq 'MSWin32') {
-        system('start "TEMP_HTTP_SERVER" /MIN perl ' . $srd_folder . 't/http-server.pl');
+        system('start "TEMP_HTTP_SERVER" /MIN perl ' . $repo_root . 't/http-server.pl');
     }
     }
     else {
     else {
-        system('perl ' . $srd_folder . 't/http-server.pl > /dev/null &');
+        system('perl ' . $repo_root . 't/http-server.pl > /dev/null &');
     }
     }
+    print 'Starting a new server.' . "\n";
 }
 }
 
 
-sub killServer {
+sub kill_server {
     if ($^O eq 'MSWin32') {
     if ($^O eq 'MSWin32') {
         system("taskkill /FI \"WINDOWTITLE eq TEMP_HTTP_SERVER\"");
         system("taskkill /FI \"WINDOWTITLE eq TEMP_HTTP_SERVER\"");
     }
     }
@@ -57,7 +57,12 @@ sub killServer {
     }
     }
 }
 }
 
 
-sub resetEnv {
-    `cd $srd_folder && dzil clean`;
-    killServer();
+
+sub reset_env {
+    if (@ARGV && $ARGV[0] eq 'reset') {
+        print 'Cleaning. ';
+        `cd $repo_root && dzil clean`;
+    }
+    print 'Taking out any existing servers. ' . "\n";
+    kill_server();
 }
 }

+ 0 - 1
t/error.t

@@ -7,7 +7,6 @@ use Test::Exception;
 use Test::LWP::UserAgent;
 use Test::LWP::UserAgent;
 use IO::Socket::INET;
 use IO::Socket::INET;
 
 
-
 BEGIN: {
 BEGIN: {
     unless (use_ok('Selenium::Remote::Driver')) {
     unless (use_ok('Selenium::Remote::Driver')) {
         BAIL_OUT("Couldn't load Selenium::Remote::Driver");
         BAIL_OUT("Couldn't load Selenium::Remote::Driver");

+ 4 - 3
t/http-server.pl

@@ -4,6 +4,7 @@
 use warnings;
 use warnings;
 use strict;
 use strict;
 use IO::Socket;
 use IO::Socket;
+use FindBin;
 use File::stat;
 use File::stat;
 use File::Basename;
 use File::Basename;
 
 
@@ -14,15 +15,15 @@ my $server = IO::Socket::INET->new(
     ReuseAddr => 1
     ReuseAddr => 1
 );
 );
 
 
-my $server_root = "t/";
+my $server_root = $FindBin::Bin . '/';
 
 
 die "Server failed.\n" unless $server;
 die "Server failed.\n" unless $server;
 
 
 while ( my $client = $server->accept() ) {
 while ( my $client = $server->accept() ) {
     $client->autoflush(1);
     $client->autoflush(1);
-    
+
     my $request = <$client>;
     my $request = <$client>;
-    
+
     my $filename;
     my $filename;
     my $filesize;
     my $filesize;
     my $content_type;
     my $content_type;

+ 139 - 0
t/lib/TestHarness.pm

@@ -0,0 +1,139 @@
+package TestHarness;
+
+# ABSTRACT: Take care of set up for recording/replaying mocks
+use FindBin;
+use Moo;
+use Selenium::Remote::Mock::RemoteConnection;
+use Test::More;
+
+=head1 SYNOPSIS
+
+    my $harness = TestHarness->new(
+        this_file => $FindBin::Script
+    );
+    my %selenium_args = %{ $harness->base_caps };
+
+=head1 DESCRIPTION
+
+A setup class for all the repetitive things we need to do before
+running tests. First, we're deciding whether the test is in C<record>
+or C<replay> mode. If we're recording, we'll end up writing all the
+HTTP request/response pairs out to L</mock_file>. If we're replaying,
+we'll look for our OS-appropriate mock_file and try to read from it.
+
+After we figure that out, we can instantiate our
+Mock::RemoteConnection with the proper constructor arguments and
+return that as our base_args for use in the tests! Finally, on
+destruction, if we're recording, we make sure to dump out all of the
+request/response pairs to the mock_file.
+
+=attr this_file
+
+Required. Pass in the short name of the test file in use so we can
+figure out where the corresponding recording belongs. For a test file
+named C<t/01-driver.t>, we'd expect this argument to be
+C<01-driver.t>.
+
+=cut
+
+has calling_file => (
+    is => 'ro',
+    init_arg => 'this_file',
+    required => 1
+);
+
+has record => (
+    is => 'ro',
+    init_args => undef,
+    default => sub {
+        if (defined $ENV{WD_MOCKING_RECORD}
+              && $ENV{WD_MOCKING_RECORD} == 1) {
+            return 1;
+        }
+        else {
+            return 0;
+        }
+    }
+);
+
+has os => (
+    is => 'ro',
+    init_args => undef,
+    default => sub {
+        my $os  = $^O;
+        if ($os =~ m/(aix|freebsd|openbsd|sunos|solaris)/) {
+            $os = 'linux';
+        }
+
+        return $os;
+    }
+);
+
+has base_caps => (
+    is => 'rw',
+    lazy => 1,
+    default => sub {
+        my ($self) = @_;
+        my $args = {
+            browser_name => 'firefox',
+            remote_conn => $self->mock_remote_conn
+        };
+
+        return $args;
+    }
+);
+
+has mock_remote_conn => (
+    is => 'ro',
+    lazy => 1,
+    builder => sub {
+        my ($self) = @_;
+        if ($self->record) {
+            return Selenium::Remote::Mock::RemoteConnection->new(
+                record => 1
+            );
+        }
+        else {
+            return Selenium::Remote::Mock::RemoteConnection->new(
+                replay      => 1,
+                replay_file => $self->mock_file
+            );
+        }
+    }
+);
+
+has mock_file => (
+    is => 'ro',
+    lazy => 1,
+    builder => sub {
+        my ($self) = @_;
+
+        # Since FindBin uses a Begin block, and we're using it in the
+        # tests themselves, $FindBin::Bin will already be initialized
+        # to the folder that the *.t files live in - that is, `t`.
+        my $mock_folder = $FindBin::Bin . '/mock-recordings/';
+
+        my $test_name = lc($self->calling_file);
+        $test_name =~ s/\.t$//;
+
+        my $mock_file = $mock_folder . $test_name . '-mock-' . $self->os . '.json';
+
+        # If we're replaying, we need a mock to read from. Otherwise,
+        # we can't do anything
+        if (not $self->record) {
+            plan skip_all => "Mocking of tests is not been enabled for this platform"
+              unless -e $mock_file;
+        }
+
+        return $mock_file;
+    }
+);
+
+sub DEMOLISH {
+    my ($self) = @_;
+    if ($self->record) {
+        $self->mock_remote_conn->dump_session_store($self->mock_file);
+    }
+}
+
+1;

文件差异内容过多而无法显示
+ 30 - 0
t/mock-recordings/01-driver-mock-MSWin32.json


文件差异内容过多而无法显示
+ 44 - 43
t/mock-recordings/01-driver-mock-darwin.json


文件差异内容过多而无法显示
+ 13 - 21
t/mock-recordings/01-driver-mock-linux.json


+ 98 - 0
t/mock-recordings/02-webelement-mock-MSWin32.json

@@ -0,0 +1,98 @@
+{
+   "POST session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/element {\"using\":\"id\",\"value\":\"withText\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:56 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 165\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:57 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":{\"ELEMENT\":\"2\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":20322}\n"
+   ],
+   "POST session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/url {\"url\":\"http://localhost:63636/metakeys.html\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:31:35 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:31:36 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":30982875}\n"
+   ],
+   "POST session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/url {\"url\":\"http://localhost:63636/dragAndDropTest.html\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:31:36 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:31:36 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":15081741}\n"
+   ],
+   "DELETE session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2 {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:31:36 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:31:36 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":28104970}\n"
+   ],
+   "GET session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/element/2/text {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:57 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 166\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:57 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":\"Example text\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":4139488}\n"
+   ],
+   "POST session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/element {\"using\":\"id\",\"value\":\"metainput\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:31:36 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 168\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:31:36 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":{\"ELEMENT\":\"5\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":16603245}\n"
+   ],
+   "POST session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/element {\"using\":\"id\",\"value\":\"checky\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:57 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 168\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:57 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":{\"ELEMENT\":\"4\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":21012826}\n"
+   ],
+   "GET session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/element/6/size {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:31:36 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 237\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:31:36 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":{\"height\":18,\"width\":18,\"class\":\"org.openqa.selenium.Dimension\",\"hCode\":-2147483648},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":18641719}\n"
+   ],
+   "POST session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/element {\"using\":\"id\",\"value\":\"displayed\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:31:36 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 168\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:31:36 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":{\"ELEMENT\":\"7\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":27542420}\n"
+   ],
+   "POST session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/back {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:56 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:56 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":12474872}\n"
+   ],
+   "POST session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/element/0/click {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:56 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:56 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":27144285}\n"
+   ],
+   "POST session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/modifier {\"isdown\":1,\"value\":\"Alt\"}" : [
+      "HTTP/1.1 500 Internal Server Error\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:31:36 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 1234\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:31:36 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":null,\"status\":13,\"value\":{\"message\":\"POST /session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/modifier\\nBuild info: version: '2.43.1', revision: '5163bce', time: '2014-09-10 16:27:33'\\nSystem info: host: 'daren', ip: '192.168.1.200', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_51'\\nDriver info: driver.version: unknown\",\"localizedMessage\":\"POST /session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/modifier\\nBuild info: version: '2.43.1', revision: '5163bce', time: '2014-09-10 16:27:33'\\nSystem info: host: 'daren', ip: '192.168.1.200', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_51'\\nDriver info: driver.version: unknown\",\"suppressed\":[],\"cause\":null,\"systemInformation\":\"System info: host: 'daren', ip: '192.168.1.200', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_51'\",\"supportUrl\":null,\"class\":\"org.openqa.selenium.UnsupportedCommandException\",\"additionalInformation\":\"\\nDriver info: driver.version: unknown\",\"hCode\":12083383,\"stackTrace\":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},\"state\":\"unhandled error\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":14002014}\n"
+   ],
+   "GET session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/title {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:56 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 169\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:56 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":\"Hello WebDriver\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":4069214}\n"
+   ],
+   "GET session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/element/3/attribute/value {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:57 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:57 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":\"id\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":15902353}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:57 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:57 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":\"id\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":26067871}\n"
+   ],
+   "GET session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/element/7/displayed {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:31:36 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:31:36 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":true,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":14129547}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:31:36 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:31:36 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":true,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":19367721}\n"
+   ],
+   "POST session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/element/active {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:56 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 168\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:56 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":{\"ELEMENT\":\"1\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":27149182}\n"
+   ],
+   "GET session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/element/3/name {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:57 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 160\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:57 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":\"input\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":26580514}\n"
+   ],
+   "POST session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/element/4/toggle {}" : [
+      "HTTP/1.1 500 Internal Server Error\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:57 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 1250\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:57 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":null,\"status\":13,\"value\":{\"message\":\"POST /session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/element/4/toggle\\nBuild info: version: '2.43.1', revision: '5163bce', time: '2014-09-10 16:27:33'\\nSystem info: host: 'daren', ip: '192.168.1.200', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_51'\\nDriver info: driver.version: unknown\",\"localizedMessage\":\"POST /session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/element/4/toggle\\nBuild info: version: '2.43.1', revision: '5163bce', time: '2014-09-10 16:27:33'\\nSystem info: host: 'daren', ip: '192.168.1.200', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_51'\\nDriver info: driver.version: unknown\",\"suppressed\":[],\"cause\":null,\"systemInformation\":\"System info: host: 'daren', ip: '192.168.1.200', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_51'\",\"supportUrl\":null,\"class\":\"org.openqa.selenium.UnsupportedCommandException\",\"additionalInformation\":\"\\nDriver info: driver.version: unknown\",\"hCode\":15685891,\"stackTrace\":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},\"state\":\"unhandled error\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":29168386}\n"
+   ],
+   "GET session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/element/3/attribute/missing-attribute {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:57 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:57 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":29050173}\n"
+   ],
+   "GET session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/element/6/location {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:31:36 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 217\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:31:36 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":{\"class\":\"org.openqa.selenium.Point\",\"hCode\":8388608,\"y\":8,\"x\":8},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":5194611}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:31:36 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 218\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:31:36 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":{\"class\":\"org.openqa.selenium.Point\",\"hCode\":8388608,\"y\":8,\"x\":8},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":10018609}\n"
+   ],
+   "POST session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/element {\"using\":\"id\",\"value\":\"test1\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:31:36 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 168\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:31:36 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":{\"ELEMENT\":\"6\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":29347261}\n"
+   ],
+   "POST session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/url {\"url\":\"http://localhost:63636/formPage.html\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:56 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:56 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":32071717}\n"
+   ],
+   "POST session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/element {\"using\":\"id\",\"value\":\"hidden\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:31:36 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 167\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:31:36 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":{\"ELEMENT\":\"8\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":4325531}\n"
+   ],
+   "POST session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/url {\"url\":\"http://localhost:63636/index.html\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:31:36 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:31:36 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":21952293}\n"
+   ],
+   "POST session {\"desiredCapabilities\":{\"acceptSslCerts\":true,\"browserName\":\"firefox\",\"javascriptEnabled\":true,\"platform\":\"ANY\",\"version\":\"\"}}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:50 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 579\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:56 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":{\"platform\":\"WINDOWS\",\"javascriptEnabled\":true,\"acceptSslCerts\":true,\"browserName\":\"firefox\",\"rotatable\":false,\"locationContextEnabled\":true,\"webdriver.remote.sessionid\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"version\":\"27.0.1\",\"databaseEnabled\":true,\"cssSelectorsEnabled\":true,\"handlesAlerts\":true,\"browserConnectionEnabled\":true,\"webStorageEnabled\":true,\"nativeEvents\":false,\"applicationCacheEnabled\":true,\"takesScreenshot\":true},\"state\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":23401965}\n"
+   ],
+   "POST session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/element {\"using\":\"xpath\",\"value\":\"//a[@href='/index.html']\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:56 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 168\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:56 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":{\"ELEMENT\":\"0\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":20863342}\n"
+   ],
+   "POST session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/element/4/click {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:57 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 156\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:57 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1453272}\n"
+   ],
+   "GET session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/element/8/displayed {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:31:36 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 158\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:31:36 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":false,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":12870550}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:31:36 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 158\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:31:36 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":false,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":25378911}\n"
+   ],
+   "GET session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/element/4/selected {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:57 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 158\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:57 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":false,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":22182430}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:57 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:57 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":true,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":29611676}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:57 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:57 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":true,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":12149377}\n"
+   ],
+   "POST session/a4b49f4c-7af7-40a8-8892-0eab12fed1c2/element {\"using\":\"id\",\"value\":\"id-name1\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:57 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 166\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:57 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"a4b49f4c-7af7-40a8-8892-0eab12fed1c2\",\"status\":0,\"value\":{\"ELEMENT\":\"3\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":283157}\n"
+   ]
+}

文件差异内容过多而无法显示
+ 3 - 5
t/mock-recordings/02-webelement-mock-darwin.json


+ 66 - 69
t/mock-recordings/02-webelement-mock-linux.json

@@ -1,101 +1,98 @@
 {
 {
-   "POST session/66633241-1120-445a-be6e-93919b366cd5/element/4/click {}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":58819575}\n"
+   "POST session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/url {\"url\":\"http://localhost:63636/formPage.html\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:07 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:07 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":10120278}\n"
    ],
    ],
-   "POST session/66633241-1120-445a-be6e-93919b366cd5/element/4/toggle {}" : [
-      "HTTP/1.1 500 Internal Server Error\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 1292\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":13,\"sessionId\":null,\"value\":{\"message\":\"POST /session/66633241-1120-445a-be6e-93919b366cd5/element/4/toggle\\nBuild info: version: '2.43.1', revision: '5163bce', time: '2014-09-10 16:27:33'\\nSystem info: host: 'eperoum-desktop', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.13.0-34-generic', java.version: '1.6.0_33'\\nDriver info: driver.version: unknown\",\"localizedMessage\":\"POST /session/66633241-1120-445a-be6e-93919b366cd5/element/4/toggle\\nBuild info: version: '2.43.1', revision: '5163bce', time: '2014-09-10 16:27:33'\\nSystem info: host: 'eperoum-desktop', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.13.0-34-generic', java.version: '1.6.0_33'\\nDriver info: driver.version: unknown\",\"cause\":null,\"supportUrl\":null,\"systemInformation\":\"System info: host: 'eperoum-desktop', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.13.0-34-generic', java.version: '1.6.0_33'\",\"class\":\"org.openqa.selenium.UnsupportedCommandException\",\"additionalInformation\":\"\\nDriver info: driver.version: unknown\",\"hCode\":1974074174,\"stackTrace\":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},\"state\":\"unhandled error\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1789779915}\n"
+   "GET session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/element/3/attribute/value {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:07 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:07 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":\"id\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":15274597}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:07 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:07 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":\"id\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":21576068}\n"
    ],
    ],
-   "POST session {\"desiredCapabilities\":{\"acceptSslCerts\":true,\"browserName\":\"firefox\",\"javascriptEnabled\":true,\"platform\":\"ANY\",\"version\":\"\"}}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:09 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 545\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:12 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":{\"platform\":\"LINUX\",\"acceptSslCerts\":true,\"javascriptEnabled\":true,\"browserName\":\"firefox\",\"rotatable\":false,\"locationContextEnabled\":true,\"webdriver.remote.sessionid\":\"66633241-1120-445a-be6e-93919b366cd5\",\"version\":\"33.0\",\"cssSelectorsEnabled\":true,\"databaseEnabled\":true,\"handlesAlerts\":true,\"nativeEvents\":false,\"webStorageEnabled\":true,\"applicationCacheEnabled\":true,\"takesScreenshot\":true},\"state\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1340931685}\n"
-   ],
-   "POST session/66633241-1120-445a-be6e-93919b366cd5/element {\"using\":\"id\",\"value\":\"checky\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 170\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":{\"ELEMENT\":\"4\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1162009414}\n"
+   "GET session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/element/4/selected {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:07 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 158\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:07 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":false,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":12127674}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:07 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:07 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":true,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":25806488}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:07 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:07 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":true,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":27303435}\n"
    ],
    ],
-   "POST session/66633241-1120-445a-be6e-93919b366cd5/url {\"url\":\"http://localhost:63636/dragAndDropTest.html\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1821234298}\n"
+   "GET session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/element/6/location {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:08 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 218\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:08 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":{\"class\":\"org.openqa.selenium.Point\",\"hCode\":8388608,\"y\":8,\"x\":8},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":19292607}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:08 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 218\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:08 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":{\"class\":\"org.openqa.selenium.Point\",\"hCode\":8388608,\"y\":8,\"x\":8},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":19149799}\n"
    ],
    ],
-   "POST session/66633241-1120-445a-be6e-93919b366cd5/url {\"url\":\"http://localhost:63636/index.html\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1616814753}\n"
+   "POST session {\"desiredCapabilities\":{\"acceptSslCerts\":true,\"browserName\":\"firefox\",\"javascriptEnabled\":true,\"platform\":\"ANY\",\"version\":\"\"}}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:05 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 577\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:07 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":{\"platform\":\"LINUX\",\"javascriptEnabled\":true,\"acceptSslCerts\":true,\"browserName\":\"firefox\",\"rotatable\":false,\"locationContextEnabled\":true,\"webdriver.remote.sessionid\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"version\":\"27.0.1\",\"databaseEnabled\":true,\"cssSelectorsEnabled\":true,\"handlesAlerts\":true,\"browserConnectionEnabled\":true,\"webStorageEnabled\":true,\"nativeEvents\":false,\"applicationCacheEnabled\":true,\"takesScreenshot\":true},\"state\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":20345285}\n"
    ],
    ],
-   "POST session/66633241-1120-445a-be6e-93919b366cd5/modifier {\"isdown\":1,\"value\":\"Alt\"}" : [
-      "HTTP/1.1 500 Internal Server Error\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 1274\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":13,\"sessionId\":null,\"value\":{\"message\":\"POST /session/66633241-1120-445a-be6e-93919b366cd5/modifier\\nBuild info: version: '2.43.1', revision: '5163bce', time: '2014-09-10 16:27:33'\\nSystem info: host: 'eperoum-desktop', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.13.0-34-generic', java.version: '1.6.0_33'\\nDriver info: driver.version: unknown\",\"localizedMessage\":\"POST /session/66633241-1120-445a-be6e-93919b366cd5/modifier\\nBuild info: version: '2.43.1', revision: '5163bce', time: '2014-09-10 16:27:33'\\nSystem info: host: 'eperoum-desktop', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.13.0-34-generic', java.version: '1.6.0_33'\\nDriver info: driver.version: unknown\",\"cause\":null,\"supportUrl\":null,\"systemInformation\":\"System info: host: 'eperoum-desktop', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.13.0-34-generic', java.version: '1.6.0_33'\",\"class\":\"org.openqa.selenium.UnsupportedCommandException\",\"additionalInformation\":\"\\nDriver info: driver.version: unknown\",\"hCode\":450049437,\"stackTrace\":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},\"state\":\"unhandled error\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":543482925}\n"
+   "POST session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/element {\"using\":\"xpath\",\"value\":\"//a[@href='/index.html']\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:07 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 168\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:07 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":{\"ELEMENT\":\"0\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":17560578}\n"
    ],
    ],
-   "GET session/66633241-1120-445a-be6e-93919b366cd5/element/6/size {}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 237\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":{\"height\":18,\"width\":18,\"class\":\"org.openqa.selenium.Dimension\",\"hCode\":-2147483648},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":88498987}\n"
+   "POST session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/element/active {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:07 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 167\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:07 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":{\"ELEMENT\":\"1\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":5044269}\n"
    ],
    ],
-   "POST session/66633241-1120-445a-be6e-93919b366cd5/url {\"url\":\"http://localhost:63636/formPage.html\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:12 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:13 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1924121576}\n"
+   "POST session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/element/4/click {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:07 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 156\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:07 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":2710004}\n"
    ],
    ],
-   "GET session/66633241-1120-445a-be6e-93919b366cd5/element/3/name {}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 162\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":\"input\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1985079970}\n"
+   "POST session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/modifier {\"isdown\":1,\"value\":\"Alt\"}" : [
+      "HTTP/1.1 500 Internal Server Error\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:07 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 1275\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:07 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":13,\"sessionId\":null,\"value\":{\"message\":\"POST /session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/modifier\\nBuild info: version: '2.43.1', revision: '5163bce', time: '2014-09-10 16:27:33'\\nSystem info: host: 'precise32', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'i386', os.version: '3.2.0-23-generic-pae', java.version: '1.7.0_51'\\nDriver info: driver.version: unknown\",\"localizedMessage\":\"POST /session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/modifier\\nBuild info: version: '2.43.1', revision: '5163bce', time: '2014-09-10 16:27:33'\\nSystem info: host: 'precise32', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'i386', os.version: '3.2.0-23-generic-pae', java.version: '1.7.0_51'\\nDriver info: driver.version: unknown\",\"suppressed\":[],\"cause\":null,\"supportUrl\":null,\"systemInformation\":\"System info: host: 'precise32', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'i386', os.version: '3.2.0-23-generic-pae', java.version: '1.7.0_51'\",\"class\":\"org.openqa.selenium.UnsupportedCommandException\",\"additionalInformation\":\"\\nDriver info: driver.version: unknown\",\"hCode\":13233083,\"stackTrace\":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},\"state\":\"unhandled error\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":9661030}\n"
    ],
    ],
-   "POST session/66633241-1120-445a-be6e-93919b366cd5/element {\"using\":\"id\",\"value\":\"metainput\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 170\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":{\"ELEMENT\":\"5\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1921479689}\n"
+   "POST session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/element/0/click {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:07 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 156\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:07 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":8426470}\n"
    ],
    ],
-   "POST session/66633241-1120-445a-be6e-93919b366cd5/element {\"using\":\"id\",\"value\":\"withText\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:13 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 169\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":{\"ELEMENT\":\"2\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":779773295}\n"
+   "POST session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/url {\"url\":\"http://localhost:63636/metakeys.html\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:07 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 156\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:07 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":9662832}\n"
    ],
    ],
-   "POST session/66633241-1120-445a-be6e-93919b366cd5/element {\"using\":\"id\",\"value\":\"test1\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 169\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":{\"ELEMENT\":\"6\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":535565445}\n"
+   "GET session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/title {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:07 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 170\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:07 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":\"Hello WebDriver\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":11029071}\n"
    ],
    ],
-   "GET session/66633241-1120-445a-be6e-93919b366cd5/element/3/attribute/value {}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 158\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":\"id\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":415696918}\n",
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 158\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":\"id\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":282718691}\n"
+   "POST session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/element {\"using\":\"id\",\"value\":\"displayed\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:08 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 168\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:08 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":{\"ELEMENT\":\"7\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":11141348}\n"
    ],
    ],
-   "POST session/66633241-1120-445a-be6e-93919b366cd5/back {}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:13 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:13 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1587124653}\n"
+   "GET session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/element/3/name {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:07 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:07 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":\"input\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":3589205}\n"
    ],
    ],
-   "GET session/66633241-1120-445a-be6e-93919b366cd5/title {}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:13 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 172\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:13 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":\"Hello WebDriver\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":2081937758}\n"
+   "POST session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/back {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:07 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 156\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:07 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":3867972}\n"
    ],
    ],
-   "POST session/66633241-1120-445a-be6e-93919b366cd5/element {\"using\":\"xpath\",\"value\":\"//a[@href='/index.html']\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:13 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 169\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:13 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":{\"ELEMENT\":\"0\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":484436112}\n"
+   "GET session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/element/3/attribute/missing-attribute {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:07 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:07 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":13309971}\n"
    ],
    ],
-   "POST session/66633241-1120-445a-be6e-93919b366cd5/element {\"using\":\"id\",\"value\":\"id-name1\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 170\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":{\"ELEMENT\":\"3\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1336019882}\n"
+   "GET session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/element/7/displayed {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:08 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:08 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":true,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":16373878}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:08 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:08 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":true,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":24633404}\n"
    ],
    ],
-   "POST session/66633241-1120-445a-be6e-93919b366cd5/element/0/click {}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:13 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:13 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1053704088}\n"
+   "DELETE session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:08 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:08 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":10120145}\n"
    ],
    ],
-   "GET session/66633241-1120-445a-be6e-93919b366cd5/element/3/attribute/missing-attribute {}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 158\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":603166482}\n"
+   "GET session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/element/2/text {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:07 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 166\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:07 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":\"Example text\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":2291165}\n"
    ],
    ],
-   "GET session/66633241-1120-445a-be6e-93919b366cd5/element/7/displayed {}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":true,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1630432021}\n",
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":true,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1632371842}\n"
+   "GET session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/element/6/size {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:08 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 237\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:08 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":{\"height\":18,\"width\":18,\"class\":\"org.openqa.selenium.Dimension\",\"hCode\":-2147483648},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":24937124}\n"
    ],
    ],
-   "DELETE session/66633241-1120-445a-be6e-93919b366cd5 {}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:15 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":80582910}\n"
+   "POST session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/element {\"using\":\"id\",\"value\":\"checky\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:07 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 168\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:07 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":{\"ELEMENT\":\"4\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":29357677}\n"
    ],
    ],
-   "POST session/66633241-1120-445a-be6e-93919b366cd5/url {\"url\":\"http://localhost:63636/metakeys.html\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 158\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":276359352}\n"
+   "POST session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/url {\"url\":\"http://localhost:63636/dragAndDropTest.html\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:07 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:08 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":29357411}\n"
    ],
    ],
-   "GET session/66633241-1120-445a-be6e-93919b366cd5/element/2/text {}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 169\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":\"Example text\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1025227317}\n"
+   "POST session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/element {\"using\":\"id\",\"value\":\"withText\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:07 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 168\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:07 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":{\"ELEMENT\":\"2\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":18456988}\n"
    ],
    ],
-   "POST session/66633241-1120-445a-be6e-93919b366cd5/element/6/drag {\"x\":200,\"y\":200}" : [
-      "HTTP/1.1 500 Internal Server Error\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 1287\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":13,\"sessionId\":null,\"value\":{\"message\":\"POST /session/66633241-1120-445a-be6e-93919b366cd5/element/6/drag\\nBuild info: version: '2.43.1', revision: '5163bce', time: '2014-09-10 16:27:33'\\nSystem info: host: 'eperoum-desktop', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.13.0-34-generic', java.version: '1.6.0_33'\\nDriver info: driver.version: unknown\",\"localizedMessage\":\"POST /session/66633241-1120-445a-be6e-93919b366cd5/element/6/drag\\nBuild info: version: '2.43.1', revision: '5163bce', time: '2014-09-10 16:27:33'\\nSystem info: host: 'eperoum-desktop', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.13.0-34-generic', java.version: '1.6.0_33'\\nDriver info: driver.version: unknown\",\"cause\":null,\"supportUrl\":null,\"systemInformation\":\"System info: host: 'eperoum-desktop', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.13.0-34-generic', java.version: '1.6.0_33'\",\"class\":\"org.openqa.selenium.UnsupportedCommandException\",\"additionalInformation\":\"\\nDriver info: driver.version: unknown\",\"hCode\":1258573716,\"stackTrace\":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},\"state\":\"unhandled error\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":134521862}\n"
+   "POST session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/element {\"using\":\"id\",\"value\":\"test1\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:08 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 168\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:08 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":{\"ELEMENT\":\"6\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":13713778}\n"
    ],
    ],
-   "POST session/66633241-1120-445a-be6e-93919b366cd5/element/active {}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:13 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 169\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:13 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":{\"ELEMENT\":\"1\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":199570377}\n"
+   "POST session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/url {\"url\":\"http://localhost:63636/index.html\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:08 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:08 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":23564699}\n"
    ],
    ],
-   "POST session/66633241-1120-445a-be6e-93919b366cd5/element {\"using\":\"id\",\"value\":\"displayed\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 169\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":{\"ELEMENT\":\"7\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":959623805}\n"
+   "POST session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/element {\"using\":\"id\",\"value\":\"hidden\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:08 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 167\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:08 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":{\"ELEMENT\":\"8\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":9778978}\n"
    ],
    ],
-   "POST session/66633241-1120-445a-be6e-93919b366cd5/element {\"using\":\"id\",\"value\":\"hidden\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 170\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":{\"ELEMENT\":\"8\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1124993751}\n"
+   "POST session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/element {\"using\":\"id\",\"value\":\"id-name1\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:07 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 167\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:07 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":{\"ELEMENT\":\"3\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":7475336}\n"
    ],
    ],
-   "GET session/66633241-1120-445a-be6e-93919b366cd5/element/6/location {}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 217\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":{\"class\":\"org.openqa.selenium.Point\",\"y\":8,\"hCode\":8388608,\"x\":8},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":6207996}\n",
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 219\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":{\"class\":\"org.openqa.selenium.Point\",\"y\":8,\"hCode\":8388608,\"x\":8},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":395953562}\n"
+   "POST session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/element/4/toggle {}" : [
+      "HTTP/1.1 500 Internal Server Error\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:07 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 1290\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:07 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":13,\"sessionId\":null,\"value\":{\"message\":\"POST /session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/element/4/toggle\\nBuild info: version: '2.43.1', revision: '5163bce', time: '2014-09-10 16:27:33'\\nSystem info: host: 'precise32', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'i386', os.version: '3.2.0-23-generic-pae', java.version: '1.7.0_51'\\nDriver info: driver.version: unknown\",\"localizedMessage\":\"POST /session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/element/4/toggle\\nBuild info: version: '2.43.1', revision: '5163bce', time: '2014-09-10 16:27:33'\\nSystem info: host: 'precise32', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'i386', os.version: '3.2.0-23-generic-pae', java.version: '1.7.0_51'\\nDriver info: driver.version: unknown\",\"suppressed\":[],\"cause\":null,\"supportUrl\":null,\"systemInformation\":\"System info: host: 'precise32', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'i386', os.version: '3.2.0-23-generic-pae', java.version: '1.7.0_51'\",\"class\":\"org.openqa.selenium.UnsupportedCommandException\",\"additionalInformation\":\"\\nDriver info: driver.version: unknown\",\"hCode\":5059137,\"stackTrace\":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},\"state\":\"unhandled error\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1989637}\n"
    ],
    ],
-   "GET session/66633241-1120-445a-be6e-93919b366cd5/element/4/selected {}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":false,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":255758330}\n",
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":true,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1707294763}\n",
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 158\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":true,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":605942758}\n"
+   "POST session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/element {\"using\":\"id\",\"value\":\"metainput\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:07 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 167\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:07 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":{\"ELEMENT\":\"5\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":2488371}\n"
    ],
    ],
-   "GET session/66633241-1120-445a-be6e-93919b366cd5/element/8/displayed {}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 160\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":false,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1463346716}\n",
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:14 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:14 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"66633241-1120-445a-be6e-93919b366cd5\",\"value\":false,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":664014954}\n"
+   "GET session/6e4b3d56-bde3-4432-a2fc-2d63f32c020d/element/8/displayed {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:08 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 158\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:08 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":false,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":16070800}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:08 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 158\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:08 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"6e4b3d56-bde3-4432-a2fc-2d63f32c020d\",\"value\":false,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":10697652}\n"
    ]
    ]
 }
 }

+ 41 - 0
t/mock-recordings/10-switch-to-window-mock-MSWin32.json

@@ -0,0 +1,41 @@
+{
+   "GET session/8da6ff41-3545-452f-ae26-2ddcfb53ac7c/title {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:54 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 199\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:54 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"8da6ff41-3545-452f-ae26-2ddcfb53ac7c\",\"status\":0,\"value\":\"The Perl Programming Language - www.perl.org\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":19080386}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:54 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 199\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:54 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"8da6ff41-3545-452f-ae26-2ddcfb53ac7c\",\"status\":0,\"value\":\"The Perl Programming Language - www.perl.org\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":19850299}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:54 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 208\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:54 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"8da6ff41-3545-452f-ae26-2ddcfb53ac7c\",\"status\":0,\"value\":\"The Comprehensive Perl Archive Network - www.cpan.org\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":14841561}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:54 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 199\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:55 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"8da6ff41-3545-452f-ae26-2ddcfb53ac7c\",\"status\":0,\"value\":\"The Perl Programming Language - www.perl.org\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":28005080}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:55 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 208\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:55 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"8da6ff41-3545-452f-ae26-2ddcfb53ac7c\",\"status\":0,\"value\":\"The Comprehensive Perl Archive Network - www.cpan.org\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":30906257}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:55 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 198\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:55 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"8da6ff41-3545-452f-ae26-2ddcfb53ac7c\",\"status\":0,\"value\":\"The Perl Programming Language - www.perl.org\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":6272964}\n"
+   ],
+   "POST session/8da6ff41-3545-452f-ae26-2ddcfb53ac7c/execute {\"args\":[],\"script\":\"return window.name = 'perlorg';\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:54 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 162\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:54 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"8da6ff41-3545-452f-ae26-2ddcfb53ac7c\",\"status\":0,\"value\":\"perlorg\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":16658844}\n"
+   ],
+   "POST session/8da6ff41-3545-452f-ae26-2ddcfb53ac7c/execute {\"args\":[],\"script\":\"$(window.open('http://cpan.org/', 'cpanorg'))\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:54 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:54 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"8da6ff41-3545-452f-ae26-2ddcfb53ac7c\",\"status\":0,\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":11358733}\n"
+   ],
+   "POST session/8da6ff41-3545-452f-ae26-2ddcfb53ac7c/window {\"name\":\"cpanorg\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:55 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:55 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"8da6ff41-3545-452f-ae26-2ddcfb53ac7c\",\"status\":0,\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":16465740}\n"
+   ],
+   "POST session/8da6ff41-3545-452f-ae26-2ddcfb53ac7c/window {\"name\":\"perlorg\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:55 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:55 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"8da6ff41-3545-452f-ae26-2ddcfb53ac7c\",\"status\":0,\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":32854905}\n"
+   ],
+   "POST session {\"desiredCapabilities\":{\"acceptSslCerts\":true,\"browserName\":\"firefox\",\"javascriptEnabled\":true,\"platform\":\"ANY\",\"version\":null}}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:50 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 578\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:53 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"8da6ff41-3545-452f-ae26-2ddcfb53ac7c\",\"status\":0,\"value\":{\"platform\":\"WINDOWS\",\"javascriptEnabled\":true,\"acceptSslCerts\":true,\"browserName\":\"firefox\",\"rotatable\":false,\"locationContextEnabled\":true,\"webdriver.remote.sessionid\":\"8da6ff41-3545-452f-ae26-2ddcfb53ac7c\",\"version\":\"27.0.1\",\"databaseEnabled\":true,\"cssSelectorsEnabled\":true,\"handlesAlerts\":true,\"browserConnectionEnabled\":true,\"webStorageEnabled\":true,\"nativeEvents\":false,\"applicationCacheEnabled\":true,\"takesScreenshot\":true},\"state\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":8822059}\n"
+   ],
+   "GET session/8da6ff41-3545-452f-ae26-2ddcfb53ac7c/window_handles {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:54 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 195\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:54 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"8da6ff41-3545-452f-ae26-2ddcfb53ac7c\",\"status\":0,\"value\":[\"{9aa1b87e-f2c3-4f98-a9fa-abef5bacfe2b}\"],\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":21474032}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:54 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 236\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:54 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"8da6ff41-3545-452f-ae26-2ddcfb53ac7c\",\"status\":0,\"value\":[\"{9aa1b87e-f2c3-4f98-a9fa-abef5bacfe2b}\",\"{ac863a57-1b2e-466b-a7ef-eaa2cb0a4018}\"],\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":17128912}\n"
+   ],
+   "DELETE session/8da6ff41-3545-452f-ae26-2ddcfb53ac7c {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:55 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:55 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"8da6ff41-3545-452f-ae26-2ddcfb53ac7c\",\"status\":0,\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":12978545}\n"
+   ],
+   "POST session/8da6ff41-3545-452f-ae26-2ddcfb53ac7c/url {\"url\":\"http://perl.org/\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:53 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:53 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"8da6ff41-3545-452f-ae26-2ddcfb53ac7c\",\"status\":0,\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":16712269}\n"
+   ],
+   "POST session/8da6ff41-3545-452f-ae26-2ddcfb53ac7c/window {\"name\":\"{ac863a57-1b2e-466b-a7ef-eaa2cb0a4018}\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:54 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:54 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"8da6ff41-3545-452f-ae26-2ddcfb53ac7c\",\"status\":0,\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":18239711}\n"
+   ],
+   "POST session/8da6ff41-3545-452f-ae26-2ddcfb53ac7c/window {\"name\":\"{9aa1b87e-f2c3-4f98-a9fa-abef5bacfe2b}\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:54 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 156\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:30:54 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"8da6ff41-3545-452f-ae26-2ddcfb53ac7c\",\"status\":0,\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":7986717}\n"
+   ]
+}

+ 29 - 26
t/mock-recordings/10-switch-to-window-mock-darwin.json

@@ -1,38 +1,41 @@
 {
 {
-   "POST session/82768543-3c5f-4874-ac25-ff9b865b23c5/window {\"name\":\"perlorg\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 21:16:22 GMT\nServer: Jetty/5.1.x (Mac OS X/10.10 x86_64 java/1.8.0\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 21:16:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"state\":\"success\",\"sessionId\":\"82768543-3c5f-4874-ac25-ff9b865b23c5\",\"hCode\":1267993777,\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"status\":0}\n"
+   "GET session/0c22e3f0-51f7-48f4-8b7c-7997729a50bd/window_handles {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:07:59 GMT\nServer: Jetty/5.1.x (Mac OS X/10.9.5 x86_64 java/1.7.0_67\nContent-Length: 197\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:07:59 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"0c22e3f0-51f7-48f4-8b7c-7997729a50bd\",\"status\":0,\"state\":\"success\",\"value\":[\"{fadff9d4-cbdc-dc49-8341-520b5c91818a}\"],\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1963633841}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:08:00 GMT\nServer: Jetty/5.1.x (Mac OS X/10.9.5 x86_64 java/1.7.0_67\nContent-Length: 238\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:08:00 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"0c22e3f0-51f7-48f4-8b7c-7997729a50bd\",\"status\":0,\"state\":\"success\",\"value\":[\"{fadff9d4-cbdc-dc49-8341-520b5c91818a}\",\"{ef20de3a-4853-f144-ac85-54d82419498c}\"],\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1225013973}\n"
    ],
    ],
-   "POST session/82768543-3c5f-4874-ac25-ff9b865b23c5/window {\"name\":\"cpanorg\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 21:16:22 GMT\nServer: Jetty/5.1.x (Mac OS X/10.10 x86_64 java/1.8.0\nContent-Length: 158\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 21:16:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"state\":\"success\",\"sessionId\":\"82768543-3c5f-4874-ac25-ff9b865b23c5\",\"hCode\":818125462,\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"status\":0}\n"
+   "POST session/0c22e3f0-51f7-48f4-8b7c-7997729a50bd/window {\"name\":\"cpanorg\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:08:00 GMT\nServer: Jetty/5.1.x (Mac OS X/10.9.5 x86_64 java/1.7.0_67\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:08:00 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"0c22e3f0-51f7-48f4-8b7c-7997729a50bd\",\"status\":0,\"state\":\"success\",\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1450435222}\n"
    ],
    ],
-   "POST session {\"desiredCapabilities\":{\"acceptSslCerts\":true,\"browserName\":\"firefox\",\"javascriptEnabled\":true,\"platform\":\"ANY\",\"version\":null}}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 21:16:14 GMT\nServer: Jetty/5.1.x (Mac OS X/10.10 x86_64 java/1.8.0\nContent-Length: 543\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 21:16:15 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"state\":null,\"sessionId\":\"82768543-3c5f-4874-ac25-ff9b865b23c5\",\"hCode\":1332652636,\"value\":{\"applicationCacheEnabled\":true,\"rotatable\":false,\"handlesAlerts\":true,\"databaseEnabled\":true,\"version\":\"33.0\",\"platform\":\"MAC\",\"nativeEvents\":false,\"acceptSslCerts\":true,\"webdriver.remote.sessionid\":\"82768543-3c5f-4874-ac25-ff9b865b23c5\",\"webStorageEnabled\":true,\"locationContextEnabled\":true,\"browserName\":\"firefox\",\"takesScreenshot\":true,\"javascriptEnabled\":true,\"cssSelectorsEnabled\":true},\"class\":\"org.openqa.selenium.remote.Response\",\"status\":0}\n"
+   "POST session/0c22e3f0-51f7-48f4-8b7c-7997729a50bd/execute {\"args\":[],\"script\":\"$(window.open('http://cpan.org/', 'cpanorg'))\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:07:59 GMT\nServer: Jetty/5.1.x (Mac OS X/10.9.5 x86_64 java/1.7.0_67\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:08:00 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"0c22e3f0-51f7-48f4-8b7c-7997729a50bd\",\"status\":0,\"state\":\"success\",\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1629117058}\n"
+   ],
+   "POST session/0c22e3f0-51f7-48f4-8b7c-7997729a50bd/window {\"name\":\"{fadff9d4-cbdc-dc49-8341-520b5c91818a}\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:08:00 GMT\nServer: Jetty/5.1.x (Mac OS X/10.9.5 x86_64 java/1.7.0_67\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:08:00 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"0c22e3f0-51f7-48f4-8b7c-7997729a50bd\",\"status\":0,\"state\":\"success\",\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1014129120}\n"
    ],
    ],
-   "POST session/82768543-3c5f-4874-ac25-ff9b865b23c5/url {\"url\":\"http://perl.org/\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 21:16:15 GMT\nServer: Jetty/5.1.x (Mac OS X/10.10 x86_64 java/1.8.0\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 21:16:21 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"state\":\"success\",\"sessionId\":\"82768543-3c5f-4874-ac25-ff9b865b23c5\",\"hCode\":49956823,\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"status\":0}\n"
+   "POST session {\"desiredCapabilities\":{\"acceptSslCerts\":true,\"browserName\":\"firefox\",\"javascriptEnabled\":true,\"platform\":\"ANY\",\"version\":null}}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:07:54 GMT\nServer: Jetty/5.1.x (Mac OS X/10.9.5 x86_64 java/1.7.0_67\nContent-Length: 545\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:07:58 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"0c22e3f0-51f7-48f4-8b7c-7997729a50bd\",\"status\":0,\"state\":null,\"value\":{\"platform\":\"MAC\",\"javascriptEnabled\":true,\"acceptSslCerts\":true,\"browserName\":\"firefox\",\"rotatable\":false,\"locationContextEnabled\":true,\"webdriver.remote.sessionid\":\"0c22e3f0-51f7-48f4-8b7c-7997729a50bd\",\"version\":\"32.0.3\",\"databaseEnabled\":true,\"cssSelectorsEnabled\":true,\"handlesAlerts\":true,\"webStorageEnabled\":true,\"nativeEvents\":false,\"applicationCacheEnabled\":true,\"takesScreenshot\":true},\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1387044607}\n"
    ],
    ],
-   "GET session/82768543-3c5f-4874-ac25-ff9b865b23c5/window_handles {}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 21:16:21 GMT\nServer: Jetty/5.1.x (Mac OS X/10.10 x86_64 java/1.8.0\nContent-Length: 196\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 21:16:21 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"state\":\"success\",\"sessionId\":\"82768543-3c5f-4874-ac25-ff9b865b23c5\",\"hCode\":946627291,\"value\":[\"{9d4eac0e-d85a-134c-b446-351424439ad6}\"],\"class\":\"org.openqa.selenium.remote.Response\",\"status\":0}\n",
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 21:16:21 GMT\nServer: Jetty/5.1.x (Mac OS X/10.10 x86_64 java/1.8.0\nContent-Length: 238\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 21:16:21 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"state\":\"success\",\"sessionId\":\"82768543-3c5f-4874-ac25-ff9b865b23c5\",\"hCode\":2060330235,\"value\":[\"{9d4eac0e-d85a-134c-b446-351424439ad6}\",\"{09441860-39e1-5a48-8b83-aa30df4daeaf}\"],\"class\":\"org.openqa.selenium.remote.Response\",\"status\":0}\n"
+   "DELETE session/0c22e3f0-51f7-48f4-8b7c-7997729a50bd {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:08:00 GMT\nServer: Jetty/5.1.x (Mac OS X/10.9.5 x86_64 java/1.7.0_67\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:08:00 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"0c22e3f0-51f7-48f4-8b7c-7997729a50bd\",\"status\":0,\"state\":\"success\",\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1935882440}\n"
    ],
    ],
-   "POST session/82768543-3c5f-4874-ac25-ff9b865b23c5/window {\"name\":\"{09441860-39e1-5a48-8b83-aa30df4daeaf}\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 21:16:21 GMT\nServer: Jetty/5.1.x (Mac OS X/10.10 x86_64 java/1.8.0\nContent-Length: 158\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 21:16:21 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"state\":\"success\",\"sessionId\":\"82768543-3c5f-4874-ac25-ff9b865b23c5\",\"hCode\":677960817,\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"status\":0}\n"
+   "GET session/0c22e3f0-51f7-48f4-8b7c-7997729a50bd/title {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:07:59 GMT\nServer: Jetty/5.1.x (Mac OS X/10.9.5 x86_64 java/1.7.0_67\nContent-Length: 201\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:07:59 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"0c22e3f0-51f7-48f4-8b7c-7997729a50bd\",\"status\":0,\"state\":\"success\",\"value\":\"The Perl Programming Language - www.perl.org\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1434205134}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:08:00 GMT\nServer: Jetty/5.1.x (Mac OS X/10.9.5 x86_64 java/1.7.0_67\nContent-Length: 200\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:08:00 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"0c22e3f0-51f7-48f4-8b7c-7997729a50bd\",\"status\":0,\"state\":\"success\",\"value\":\"The Perl Programming Language - www.perl.org\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":935491704}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:08:00 GMT\nServer: Jetty/5.1.x (Mac OS X/10.9.5 x86_64 java/1.7.0_67\nContent-Length: 210\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:08:00 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"0c22e3f0-51f7-48f4-8b7c-7997729a50bd\",\"status\":0,\"state\":\"success\",\"value\":\"The Comprehensive Perl Archive Network - www.cpan.org\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1263174034}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:08:00 GMT\nServer: Jetty/5.1.x (Mac OS X/10.9.5 x86_64 java/1.7.0_67\nContent-Length: 200\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:08:00 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"0c22e3f0-51f7-48f4-8b7c-7997729a50bd\",\"status\":0,\"state\":\"success\",\"value\":\"The Perl Programming Language - www.perl.org\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":722361133}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:08:00 GMT\nServer: Jetty/5.1.x (Mac OS X/10.9.5 x86_64 java/1.7.0_67\nContent-Length: 210\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:08:00 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"0c22e3f0-51f7-48f4-8b7c-7997729a50bd\",\"status\":0,\"state\":\"success\",\"value\":\"The Comprehensive Perl Archive Network - www.cpan.org\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":2033285398}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:08:00 GMT\nServer: Jetty/5.1.x (Mac OS X/10.9.5 x86_64 java/1.7.0_67\nContent-Length: 199\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:08:00 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"0c22e3f0-51f7-48f4-8b7c-7997729a50bd\",\"status\":0,\"state\":\"success\",\"value\":\"The Perl Programming Language - www.perl.org\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":65977332}\n"
    ],
    ],
-   "POST session/82768543-3c5f-4874-ac25-ff9b865b23c5/execute {\"args\":[],\"script\":\"return window.name = 'perlorg';\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 21:16:21 GMT\nServer: Jetty/5.1.x (Mac OS X/10.10 x86_64 java/1.8.0\nContent-Length: 162\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 21:16:21 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"state\":\"success\",\"sessionId\":\"82768543-3c5f-4874-ac25-ff9b865b23c5\",\"hCode\":40506304,\"value\":\"perlorg\",\"class\":\"org.openqa.selenium.remote.Response\",\"status\":0}\n"
+   "POST session/0c22e3f0-51f7-48f4-8b7c-7997729a50bd/window {\"name\":\"perlorg\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:08:00 GMT\nServer: Jetty/5.1.x (Mac OS X/10.9.5 x86_64 java/1.7.0_67\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:08:00 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"0c22e3f0-51f7-48f4-8b7c-7997729a50bd\",\"status\":0,\"state\":\"success\",\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1968635741}\n"
    ],
    ],
-   "GET session/82768543-3c5f-4874-ac25-ff9b865b23c5/title {}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 21:16:21 GMT\nServer: Jetty/5.1.x (Mac OS X/10.10 x86_64 java/1.8.0\nContent-Length: 201\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 21:16:21 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"state\":\"success\",\"sessionId\":\"82768543-3c5f-4874-ac25-ff9b865b23c5\",\"hCode\":2040612973,\"value\":\"The Perl Programming Language - www.perl.org\",\"class\":\"org.openqa.selenium.remote.Response\",\"status\":0}\n",
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 21:16:21 GMT\nServer: Jetty/5.1.x (Mac OS X/10.10 x86_64 java/1.8.0\nContent-Length: 200\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 21:16:21 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"state\":\"success\",\"sessionId\":\"82768543-3c5f-4874-ac25-ff9b865b23c5\",\"hCode\":569372839,\"value\":\"The Perl Programming Language - www.perl.org\",\"class\":\"org.openqa.selenium.remote.Response\",\"status\":0}\n",
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 21:16:21 GMT\nServer: Jetty/5.1.x (Mac OS X/10.10 x86_64 java/1.8.0\nContent-Length: 209\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 21:16:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"state\":\"success\",\"sessionId\":\"82768543-3c5f-4874-ac25-ff9b865b23c5\",\"hCode\":191951577,\"value\":\"The Comprehensive Perl Archive Network - www.cpan.org\",\"class\":\"org.openqa.selenium.remote.Response\",\"status\":0}\n",
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 21:16:22 GMT\nServer: Jetty/5.1.x (Mac OS X/10.10 x86_64 java/1.8.0\nContent-Length: 201\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 21:16:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"state\":\"success\",\"sessionId\":\"82768543-3c5f-4874-ac25-ff9b865b23c5\",\"hCode\":1587961447,\"value\":\"The Perl Programming Language - www.perl.org\",\"class\":\"org.openqa.selenium.remote.Response\",\"status\":0}\n",
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 21:16:22 GMT\nServer: Jetty/5.1.x (Mac OS X/10.10 x86_64 java/1.8.0\nContent-Length: 210\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 21:16:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"state\":\"success\",\"sessionId\":\"82768543-3c5f-4874-ac25-ff9b865b23c5\",\"hCode\":1009336429,\"value\":\"The Comprehensive Perl Archive Network - www.cpan.org\",\"class\":\"org.openqa.selenium.remote.Response\",\"status\":0}\n",
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 21:16:22 GMT\nServer: Jetty/5.1.x (Mac OS X/10.10 x86_64 java/1.8.0\nContent-Length: 200\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 21:16:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"state\":\"success\",\"sessionId\":\"82768543-3c5f-4874-ac25-ff9b865b23c5\",\"hCode\":657274562,\"value\":\"The Perl Programming Language - www.perl.org\",\"class\":\"org.openqa.selenium.remote.Response\",\"status\":0}\n"
+   "POST session/0c22e3f0-51f7-48f4-8b7c-7997729a50bd/url {\"url\":\"http://perl.org/\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:07:58 GMT\nServer: Jetty/5.1.x (Mac OS X/10.9.5 x86_64 java/1.7.0_67\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:07:59 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"0c22e3f0-51f7-48f4-8b7c-7997729a50bd\",\"status\":0,\"state\":\"success\",\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1107966583}\n"
    ],
    ],
-   "POST session/82768543-3c5f-4874-ac25-ff9b865b23c5/window {\"name\":\"{9d4eac0e-d85a-134c-b446-351424439ad6}\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 21:16:22 GMT\nServer: Jetty/5.1.x (Mac OS X/10.10 x86_64 java/1.8.0\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 21:16:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"state\":\"success\",\"sessionId\":\"82768543-3c5f-4874-ac25-ff9b865b23c5\",\"hCode\":1438925272,\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"status\":0}\n"
+   "POST session/0c22e3f0-51f7-48f4-8b7c-7997729a50bd/execute {\"args\":[],\"script\":\"return window.name = 'perlorg';\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:07:59 GMT\nServer: Jetty/5.1.x (Mac OS X/10.9.5 x86_64 java/1.7.0_67\nContent-Length: 163\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:07:59 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"0c22e3f0-51f7-48f4-8b7c-7997729a50bd\",\"status\":0,\"state\":\"success\",\"value\":\"perlorg\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":361227765}\n"
    ],
    ],
-   "POST session/82768543-3c5f-4874-ac25-ff9b865b23c5/execute {\"args\":[],\"script\":\"$(window.open('http://cpan.org/', 'cpanorg'))\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 21:16:21 GMT\nServer: Jetty/5.1.x (Mac OS X/10.10 x86_64 java/1.8.0\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 21:16:21 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"state\":\"success\",\"sessionId\":\"82768543-3c5f-4874-ac25-ff9b865b23c5\",\"hCode\":1383999653,\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"status\":0}\n"
+   "POST session/0c22e3f0-51f7-48f4-8b7c-7997729a50bd/window {\"name\":\"{ef20de3a-4853-f144-ac85-54d82419498c}\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:08:00 GMT\nServer: Jetty/5.1.x (Mac OS X/10.9.5 x86_64 java/1.7.0_67\nContent-Length: 158\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:08:00 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"0c22e3f0-51f7-48f4-8b7c-7997729a50bd\",\"status\":0,\"state\":\"success\",\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":972578961}\n"
    ]
    ]
 }
 }

+ 28 - 25
t/mock-recordings/10-switch-to-window-mock-linux.json

@@ -1,38 +1,41 @@
 {
 {
-   "POST session/1e805f0f-c66f-40fb-82d2-d7d666b99e7e/window {\"name\":\"cpanorg\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:22 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 158\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"1e805f0f-c66f-40fb-82d2-d7d666b99e7e\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":611686506}\n"
+   "POST session/20dc20a9-b96c-437b-a61e-41748e18f185/window {\"name\":\"{2740fe00-52ec-4af2-bcb7-d35c76573605}\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:20 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:20 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"20dc20a9-b96c-437b-a61e-41748e18f185\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":24331845}\n"
    ],
    ],
-   "POST session/1e805f0f-c66f-40fb-82d2-d7d666b99e7e/window {\"name\":\"perlorg\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:22 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"1e805f0f-c66f-40fb-82d2-d7d666b99e7e\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1444598836}\n"
+   "POST session/20dc20a9-b96c-437b-a61e-41748e18f185/window {\"name\":\"{1075249a-12bb-4a12-bc59-1743aca55275}\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:19 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 156\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:19 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"20dc20a9-b96c-437b-a61e-41748e18f185\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":4399653}\n"
    ],
    ],
-   "POST session/1e805f0f-c66f-40fb-82d2-d7d666b99e7e/window {\"name\":\"{243fcf78-21a1-4181-bd37-824c656ea23e}\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:22 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"1e805f0f-c66f-40fb-82d2-d7d666b99e7e\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":2078056345}\n"
+   "GET session/20dc20a9-b96c-437b-a61e-41748e18f185/window_handles {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:19 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 195\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:19 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"20dc20a9-b96c-437b-a61e-41748e18f185\",\"value\":[\"{2740fe00-52ec-4af2-bcb7-d35c76573605}\"],\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":27331543}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:19 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 235\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:19 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"20dc20a9-b96c-437b-a61e-41748e18f185\",\"value\":[\"{2740fe00-52ec-4af2-bcb7-d35c76573605}\",\"{1075249a-12bb-4a12-bc59-1743aca55275}\"],\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":2369167}\n"
    ],
    ],
-   "POST session/1e805f0f-c66f-40fb-82d2-d7d666b99e7e/execute {\"args\":[],\"script\":\"$(window.open('http://cpan.org/', 'cpanorg'))\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:22 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"1e805f0f-c66f-40fb-82d2-d7d666b99e7e\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1106117784}\n"
+   "POST session/20dc20a9-b96c-437b-a61e-41748e18f185/window {\"name\":\"cpanorg\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:20 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:20 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"20dc20a9-b96c-437b-a61e-41748e18f185\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":25525711}\n"
    ],
    ],
    "POST session {\"desiredCapabilities\":{\"acceptSslCerts\":true,\"browserName\":\"firefox\",\"javascriptEnabled\":true,\"platform\":\"ANY\",\"version\":null}}" : [
    "POST session {\"desiredCapabilities\":{\"acceptSslCerts\":true,\"browserName\":\"firefox\",\"javascriptEnabled\":true,\"platform\":\"ANY\",\"version\":null}}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:15 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 544\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:18 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"1e805f0f-c66f-40fb-82d2-d7d666b99e7e\",\"value\":{\"platform\":\"LINUX\",\"acceptSslCerts\":true,\"javascriptEnabled\":true,\"browserName\":\"firefox\",\"rotatable\":false,\"locationContextEnabled\":true,\"webdriver.remote.sessionid\":\"1e805f0f-c66f-40fb-82d2-d7d666b99e7e\",\"version\":\"33.0\",\"cssSelectorsEnabled\":true,\"databaseEnabled\":true,\"handlesAlerts\":true,\"nativeEvents\":false,\"webStorageEnabled\":true,\"applicationCacheEnabled\":true,\"takesScreenshot\":true},\"state\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":888310580}\n"
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:06 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 577\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:16 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"20dc20a9-b96c-437b-a61e-41748e18f185\",\"value\":{\"platform\":\"LINUX\",\"javascriptEnabled\":true,\"acceptSslCerts\":true,\"browserName\":\"firefox\",\"rotatable\":false,\"locationContextEnabled\":true,\"webdriver.remote.sessionid\":\"20dc20a9-b96c-437b-a61e-41748e18f185\",\"version\":\"27.0.1\",\"databaseEnabled\":true,\"cssSelectorsEnabled\":true,\"handlesAlerts\":true,\"browserConnectionEnabled\":true,\"webStorageEnabled\":true,\"nativeEvents\":false,\"applicationCacheEnabled\":true,\"takesScreenshot\":true},\"state\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":17834946}\n"
    ],
    ],
-   "POST session/1e805f0f-c66f-40fb-82d2-d7d666b99e7e/window {\"name\":\"{8228e408-aa7c-4157-b3b3-57b48b09f9df}\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:22 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"1e805f0f-c66f-40fb-82d2-d7d666b99e7e\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1672054058}\n"
+   "POST session/20dc20a9-b96c-437b-a61e-41748e18f185/execute {\"args\":[],\"script\":\"$(window.open('http://cpan.org/', 'cpanorg'))\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:19 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 156\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:19 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"20dc20a9-b96c-437b-a61e-41748e18f185\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":2944777}\n"
    ],
    ],
-   "POST session/1e805f0f-c66f-40fb-82d2-d7d666b99e7e/url {\"url\":\"http://perl.org/\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:18 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"1e805f0f-c66f-40fb-82d2-d7d666b99e7e\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1884144444}\n"
+   "POST session/20dc20a9-b96c-437b-a61e-41748e18f185/window {\"name\":\"perlorg\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:20 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 156\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:20 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"20dc20a9-b96c-437b-a61e-41748e18f185\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":7348436}\n"
    ],
    ],
-   "GET session/1e805f0f-c66f-40fb-82d2-d7d666b99e7e/window_handles {}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:22 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 197\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"1e805f0f-c66f-40fb-82d2-d7d666b99e7e\",\"value\":[\"{8228e408-aa7c-4157-b3b3-57b48b09f9df}\"],\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1725361393}\n",
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:22 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 238\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"1e805f0f-c66f-40fb-82d2-d7d666b99e7e\",\"value\":[\"{8228e408-aa7c-4157-b3b3-57b48b09f9df}\",\"{243fcf78-21a1-4181-bd37-824c656ea23e}\"],\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1190722523}\n"
+   "DELETE session/20dc20a9-b96c-437b-a61e-41748e18f185 {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:20 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 156\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:20 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"20dc20a9-b96c-437b-a61e-41748e18f185\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":3350041}\n"
    ],
    ],
-   "POST session/1e805f0f-c66f-40fb-82d2-d7d666b99e7e/execute {\"args\":[],\"script\":\"return window.name = 'perlorg';\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:22 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 163\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"1e805f0f-c66f-40fb-82d2-d7d666b99e7e\",\"value\":\"perlorg\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":822125870}\n"
+   "GET session/20dc20a9-b96c-437b-a61e-41748e18f185/title {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:19 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 198\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:19 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"20dc20a9-b96c-437b-a61e-41748e18f185\",\"value\":\"The Perl Programming Language - www.perl.org\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":8590277}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:19 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 199\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:19 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"20dc20a9-b96c-437b-a61e-41748e18f185\",\"value\":\"The Perl Programming Language - www.perl.org\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":25589988}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:19 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 208\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:20 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"20dc20a9-b96c-437b-a61e-41748e18f185\",\"value\":\"The Comprehensive Perl Archive Network - www.cpan.org\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":30157936}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:20 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 198\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:20 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"20dc20a9-b96c-437b-a61e-41748e18f185\",\"value\":\"The Perl Programming Language - www.perl.org\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":7798062}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:20 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 208\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:20 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"20dc20a9-b96c-437b-a61e-41748e18f185\",\"value\":\"The Comprehensive Perl Archive Network - www.cpan.org\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":28986901}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:20 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 199\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:20 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"20dc20a9-b96c-437b-a61e-41748e18f185\",\"value\":\"The Perl Programming Language - www.perl.org\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":13394224}\n"
    ],
    ],
-   "GET session/1e805f0f-c66f-40fb-82d2-d7d666b99e7e/title {}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:22 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 201\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"1e805f0f-c66f-40fb-82d2-d7d666b99e7e\",\"value\":\"The Perl Programming Language - www.perl.org\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1516114332}\n",
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:22 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 201\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"1e805f0f-c66f-40fb-82d2-d7d666b99e7e\",\"value\":\"The Perl Programming Language - www.perl.org\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1574493174}\n",
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:22 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 209\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"1e805f0f-c66f-40fb-82d2-d7d666b99e7e\",\"value\":\"The Comprehensive Perl Archive Network - www.cpan.org\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":554420960}\n",
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:22 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 200\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"1e805f0f-c66f-40fb-82d2-d7d666b99e7e\",\"value\":\"The Perl Programming Language - www.perl.org\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":955899518}\n",
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:22 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 208\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"1e805f0f-c66f-40fb-82d2-d7d666b99e7e\",\"value\":\"The Comprehensive Perl Archive Network - www.cpan.org\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":77871164}\n",
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:22 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 201\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"1e805f0f-c66f-40fb-82d2-d7d666b99e7e\",\"value\":\"The Perl Programming Language - www.perl.org\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1377895419}\n"
+   "POST session/20dc20a9-b96c-437b-a61e-41748e18f185/execute {\"args\":[],\"script\":\"return window.name = 'perlorg';\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:19 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 162\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:19 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"20dc20a9-b96c-437b-a61e-41748e18f185\",\"value\":\"perlorg\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":21429697}\n"
+   ],
+   "POST session/20dc20a9-b96c-437b-a61e-41748e18f185/url {\"url\":\"http://perl.org/\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:16 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 156\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:19 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"20dc20a9-b96c-437b-a61e-41748e18f185\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":4075103}\n"
    ]
    ]
 }
 }

文件差异内容过多而无法显示
+ 7 - 0
t/mock-recordings/firefox-profile-mock-MSWin32.json


文件差异内容过多而无法显示
+ 0 - 0
t/mock-recordings/firefox-profile-mock-darwin.json


文件差异内容过多而无法显示
+ 8 - 10
t/mock-recordings/firefox-profile-mock-linux.json


+ 0 - 17
t/mock-recordings/test-selenium-remote-driver-google-darwin.json

@@ -1,17 +0,0 @@
-{
-   "GET session/a7d512e7-1a9f-488a-a62f-1205cad2d8b9/element/0/text {}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 21:16:28 GMT\nServer: Jetty/5.1.x (Mac OS X/10.10 x86_64 java/1.8.0\nContent-Length: 538\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 21:16:28 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"state\":\"success\",\"sessionId\":\"a7d512e7-1a9f-488a-a62f-1205cad2d8b9\",\"hCode\":1094971752,\"value\":\"+Vous\\nGmail\\nImages\\nConnexion\\nRecherche GoogleJ'ai de la chance\\nFrance\\nLe domaine Google.fr est disponible en : English\\nConfidentialité et conditions d'utilisation Paramètres\\nUtiliser Google.com\\nPublicité Entreprise À propos\\nLes cookies assurent le bon fonctionnement de nos services. En utilisant ces derniers, vous acceptez l'utilisation des cookies.En savoir plusOK\",\"class\":\"org.openqa.selenium.remote.Response\",\"status\":0}\n"
-   ],
-   "POST session/a7d512e7-1a9f-488a-a62f-1205cad2d8b9/element {\"using\":\"xpath\",\"value\":\"//body\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 21:16:28 GMT\nServer: Jetty/5.1.x (Mac OS X/10.10 x86_64 java/1.8.0\nContent-Length: 170\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 21:16:28 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"state\":\"success\",\"sessionId\":\"a7d512e7-1a9f-488a-a62f-1205cad2d8b9\",\"hCode\":1406801799,\"value\":{\"ELEMENT\":\"0\"},\"class\":\"org.openqa.selenium.remote.Response\",\"status\":0}\n"
-   ],
-   "POST session {\"desiredCapabilities\":{\"acceptSslCerts\":true,\"browserName\":\"firefox\",\"javascriptEnabled\":true,\"platform\":\"ANY\",\"version\":null}}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 21:16:25 GMT\nServer: Jetty/5.1.x (Mac OS X/10.10 x86_64 java/1.8.0\nContent-Length: 542\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 21:16:27 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"state\":null,\"sessionId\":\"a7d512e7-1a9f-488a-a62f-1205cad2d8b9\",\"hCode\":359722851,\"value\":{\"applicationCacheEnabled\":true,\"rotatable\":false,\"handlesAlerts\":true,\"databaseEnabled\":true,\"version\":\"33.0\",\"platform\":\"MAC\",\"nativeEvents\":false,\"acceptSslCerts\":true,\"webdriver.remote.sessionid\":\"a7d512e7-1a9f-488a-a62f-1205cad2d8b9\",\"webStorageEnabled\":true,\"locationContextEnabled\":true,\"browserName\":\"firefox\",\"takesScreenshot\":true,\"javascriptEnabled\":true,\"cssSelectorsEnabled\":true},\"class\":\"org.openqa.selenium.remote.Response\",\"status\":0}\n"
-   ],
-   "GET session/a7d512e7-1a9f-488a-a62f-1205cad2d8b9/title {}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 21:16:28 GMT\nServer: Jetty/5.1.x (Mac OS X/10.10 x86_64 java/1.8.0\nContent-Length: 163\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 21:16:28 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"state\":\"success\",\"sessionId\":\"a7d512e7-1a9f-488a-a62f-1205cad2d8b9\",\"hCode\":1296650630,\"value\":\"Google\",\"class\":\"org.openqa.selenium.remote.Response\",\"status\":0}\n"
-   ],
-   "POST session/a7d512e7-1a9f-488a-a62f-1205cad2d8b9/url {\"url\":\"http://www.google.com\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 21:16:27 GMT\nServer: Jetty/5.1.x (Mac OS X/10.10 x86_64 java/1.8.0\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 21:16:28 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"state\":\"success\",\"sessionId\":\"a7d512e7-1a9f-488a-a62f-1205cad2d8b9\",\"hCode\":2063375079,\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"status\":0}\n"
-   ]
-}

+ 0 - 17
t/mock-recordings/test-selenium-remote-driver-google-linux.json

@@ -1,17 +0,0 @@
-{
-   "GET session/22b048b3-c047-4071-9a7f-b631006fc676/title {}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:32 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 162\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:32 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"22b048b3-c047-4071-9a7f-b631006fc676\",\"value\":\"Google\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":734354657}\n"
-   ],
-   "POST session/22b048b3-c047-4071-9a7f-b631006fc676/element {\"using\":\"xpath\",\"value\":\"//body\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:32 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 169\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:32 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"22b048b3-c047-4071-9a7f-b631006fc676\",\"value\":{\"ELEMENT\":\"0\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":632248204}\n"
-   ],
-   "GET session/22b048b3-c047-4071-9a7f-b631006fc676/element/0/text {}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:32 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 487\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:33 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"22b048b3-c047-4071-9a7f-b631006fc676\",\"value\":\"+Vous\\nGmail\\nImages\\nConnexion\\nRecherche GoogleJ'ai de la chance\\nFrance\\nConfidentialité et conditions d'utilisation Paramètres\\nUtiliser Google.com\\nPublicité Entreprise À propos\\nLes cookies assurent le bon fonctionnement de nos services. En utilisant ces derniers, vous acceptez l'utilisation des cookies.En savoir plusOK\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":669261886}\n"
-   ],
-   "POST session {\"desiredCapabilities\":{\"acceptSslCerts\":true,\"browserName\":\"firefox\",\"javascriptEnabled\":true,\"platform\":\"ANY\",\"version\":null}}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:28 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 545\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:30 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"22b048b3-c047-4071-9a7f-b631006fc676\",\"value\":{\"platform\":\"LINUX\",\"acceptSslCerts\":true,\"javascriptEnabled\":true,\"browserName\":\"firefox\",\"rotatable\":false,\"locationContextEnabled\":true,\"webdriver.remote.sessionid\":\"22b048b3-c047-4071-9a7f-b631006fc676\",\"version\":\"33.0\",\"cssSelectorsEnabled\":true,\"databaseEnabled\":true,\"handlesAlerts\":true,\"nativeEvents\":false,\"webStorageEnabled\":true,\"applicationCacheEnabled\":true,\"takesScreenshot\":true},\"state\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1533846421}\n"
-   ],
-   "POST session/22b048b3-c047-4071-9a7f-b631006fc676/url {\"url\":\"http://www.google.com\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 20 Oct 2014 12:33:30 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-34-generic amd64 java/1.6.0_33\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Mon, 20 Oct 2014 12:33:32 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"22b048b3-c047-4071-9a7f-b631006fc676\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1223317874}\n"
-   ]
-}

+ 20 - 0
t/mock-recordings/test-selenium-remote-driver-google-mock-MSWin32.json

@@ -0,0 +1,20 @@
+{
+   "DELETE session/ba034a6b-15dd-4066-b65c-cc8ea62c4e61 {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:31:20 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:31:20 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"ba034a6b-15dd-4066-b65c-cc8ea62c4e61\",\"status\":0,\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":14758965}\n"
+   ],
+   "POST session/ba034a6b-15dd-4066-b65c-cc8ea62c4e61/url {\"url\":\"http://www.google.com\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:31:19 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:31:20 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"ba034a6b-15dd-4066-b65c-cc8ea62c4e61\",\"status\":0,\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":29722688}\n"
+   ],
+   "GET session/ba034a6b-15dd-4066-b65c-cc8ea62c4e61/element/0/text {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:31:20 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 269\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:31:20 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"ba034a6b-15dd-4066-b65c-cc8ea62c4e61\",\"status\":0,\"value\":\"+You\\nGmail\\nImages\\nSign in\\nGoogle SearchI'm Feeling Lucky\\nPrivacy & Terms Settings\\nAdvertising Business About\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":13908256}\n"
+   ],
+   "POST session/ba034a6b-15dd-4066-b65c-cc8ea62c4e61/element {\"using\":\"xpath\",\"value\":\"//body\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:31:20 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 168\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:31:20 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"ba034a6b-15dd-4066-b65c-cc8ea62c4e61\",\"status\":0,\"value\":{\"ELEMENT\":\"0\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":31753661}\n"
+   ],
+   "POST session {\"desiredCapabilities\":{\"acceptSslCerts\":true,\"browserName\":\"firefox\",\"javascriptEnabled\":false,\"platform\":\"ANY\",\"version\":null}}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:30:51 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 579\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:31:19 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"ba034a6b-15dd-4066-b65c-cc8ea62c4e61\",\"status\":0,\"value\":{\"platform\":\"WINDOWS\",\"javascriptEnabled\":true,\"acceptSslCerts\":true,\"browserName\":\"firefox\",\"rotatable\":false,\"locationContextEnabled\":true,\"webdriver.remote.sessionid\":\"ba034a6b-15dd-4066-b65c-cc8ea62c4e61\",\"version\":\"27.0.1\",\"databaseEnabled\":true,\"cssSelectorsEnabled\":true,\"handlesAlerts\":true,\"browserConnectionEnabled\":true,\"webStorageEnabled\":true,\"nativeEvents\":false,\"applicationCacheEnabled\":true,\"takesScreenshot\":true},\"state\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":19881910}\n"
+   ],
+   "GET session/ba034a6b-15dd-4066-b65c-cc8ea62c4e61/title {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 05:31:20 GMT\nServer: Jetty/5.1.x (Windows 7/6.1 x86 java/1.7.0_51\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 05:31:20 GMT\nClient-Peer: ::1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"ba034a6b-15dd-4066-b65c-cc8ea62c4e61\",\"status\":0,\"value\":\"Google\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":501665}\n"
+   ]
+}

+ 20 - 0
t/mock-recordings/test-selenium-remote-driver-google-mock-darwin.json

@@ -0,0 +1,20 @@
+{
+   "GET session/bd8a6e01-32b2-4c40-b96b-6af25a394754/title {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:08:08 GMT\nServer: Jetty/5.1.x (Mac OS X/10.9.5 x86_64 java/1.7.0_67\nContent-Length: 162\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:08:08 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"bd8a6e01-32b2-4c40-b96b-6af25a394754\",\"status\":0,\"state\":\"success\",\"value\":\"Google\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":845292969}\n"
+   ],
+   "POST session/bd8a6e01-32b2-4c40-b96b-6af25a394754/url {\"url\":\"http://www.google.com\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:08:07 GMT\nServer: Jetty/5.1.x (Mac OS X/10.9.5 x86_64 java/1.7.0_67\nContent-Length: 158\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:08:08 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"bd8a6e01-32b2-4c40-b96b-6af25a394754\",\"status\":0,\"state\":\"success\",\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":234481742}\n"
+   ],
+   "DELETE session/bd8a6e01-32b2-4c40-b96b-6af25a394754 {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:08:08 GMT\nServer: Jetty/5.1.x (Mac OS X/10.9.5 x86_64 java/1.7.0_67\nContent-Length: 159\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:08:08 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"bd8a6e01-32b2-4c40-b96b-6af25a394754\",\"status\":0,\"state\":\"success\",\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1184195640}\n"
+   ],
+   "POST session {\"desiredCapabilities\":{\"acceptSslCerts\":true,\"browserName\":\"firefox\",\"javascriptEnabled\":false,\"platform\":\"ANY\",\"version\":null}}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:07:54 GMT\nServer: Jetty/5.1.x (Mac OS X/10.9.5 x86_64 java/1.7.0_67\nContent-Length: 544\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:08:07 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"bd8a6e01-32b2-4c40-b96b-6af25a394754\",\"status\":0,\"state\":null,\"value\":{\"platform\":\"MAC\",\"javascriptEnabled\":true,\"acceptSslCerts\":true,\"browserName\":\"firefox\",\"rotatable\":false,\"locationContextEnabled\":true,\"webdriver.remote.sessionid\":\"bd8a6e01-32b2-4c40-b96b-6af25a394754\",\"version\":\"32.0.3\",\"databaseEnabled\":true,\"cssSelectorsEnabled\":true,\"handlesAlerts\":true,\"webStorageEnabled\":true,\"nativeEvents\":false,\"applicationCacheEnabled\":true,\"takesScreenshot\":true},\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":656518097}\n"
+   ],
+   "POST session/bd8a6e01-32b2-4c40-b96b-6af25a394754/element {\"using\":\"xpath\",\"value\":\"//body\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:08:08 GMT\nServer: Jetty/5.1.x (Mac OS X/10.9.5 x86_64 java/1.7.0_67\nContent-Length: 170\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:08:08 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"bd8a6e01-32b2-4c40-b96b-6af25a394754\",\"status\":0,\"state\":\"success\",\"value\":{\"ELEMENT\":\"0\"},\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1020548632}\n"
+   ],
+   "GET session/bd8a6e01-32b2-4c40-b96b-6af25a394754/element/0/text {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:08:08 GMT\nServer: Jetty/5.1.x (Mac OS X/10.9.5 x86_64 java/1.7.0_67\nContent-Length: 356\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:08:08 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"bd8a6e01-32b2-4c40-b96b-6af25a394754\",\"status\":0,\"state\":\"success\",\"value\":\"+You\\nGmail\\nImages\\nSign in\\nGoogle SearchI\\u0027m Feeling Lucky\\nGet real-time results and the latest news from the 2014 Midterm Elections\\nPrivacy \\u0026 Terms Settings\\nAdvertising Business About\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1601623645}\n"
+   ]
+}

+ 20 - 0
t/mock-recordings/test-selenium-remote-driver-google-mock-linux.json

@@ -0,0 +1,20 @@
+{
+   "GET session/74b05200-870b-421c-8ecc-48d7fca92bcb/element/0/text {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:16 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 344\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:17 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"74b05200-870b-421c-8ecc-48d7fca92bcb\",\"value\":\"+You\\nGmail\\nImages\\nSign in\\nGoogle SearchI'm Feeling Lucky\\nGet real-time results and the latest news from the 2014 Midterm Elections\\nPrivacy & Terms Settings\\nAdvertising Business About\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":10983873}\n"
+   ],
+   "POST session/74b05200-870b-421c-8ecc-48d7fca92bcb/url {\"url\":\"http://www.google.com\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:13 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:16 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"74b05200-870b-421c-8ecc-48d7fca92bcb\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":28907098}\n"
+   ],
+   "GET session/74b05200-870b-421c-8ecc-48d7fca92bcb/title {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:16 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 161\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:16 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"74b05200-870b-421c-8ecc-48d7fca92bcb\",\"value\":\"Google\",\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":26993204}\n"
+   ],
+   "DELETE session/74b05200-870b-421c-8ecc-48d7fca92bcb {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:17 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 157\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:17 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"74b05200-870b-421c-8ecc-48d7fca92bcb\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":10558334}\n"
+   ],
+   "POST session {\"desiredCapabilities\":{\"acceptSslCerts\":true,\"browserName\":\"firefox\",\"javascriptEnabled\":false,\"platform\":\"ANY\",\"version\":null}}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:06 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 577\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:13 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"74b05200-870b-421c-8ecc-48d7fca92bcb\",\"value\":{\"platform\":\"LINUX\",\"javascriptEnabled\":true,\"acceptSslCerts\":true,\"browserName\":\"firefox\",\"rotatable\":false,\"locationContextEnabled\":true,\"webdriver.remote.sessionid\":\"74b05200-870b-421c-8ecc-48d7fca92bcb\",\"version\":\"27.0.1\",\"databaseEnabled\":true,\"cssSelectorsEnabled\":true,\"handlesAlerts\":true,\"browserConnectionEnabled\":true,\"webStorageEnabled\":true,\"nativeEvents\":false,\"applicationCacheEnabled\":true,\"takesScreenshot\":true},\"state\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":10999907}\n"
+   ],
+   "POST session/74b05200-870b-421c-8ecc-48d7fca92bcb/element {\"using\":\"xpath\",\"value\":\"//body\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 05 Nov 2014 04:44:16 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 167\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 05 Nov 2014 04:44:16 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"74b05200-870b-421c-8ecc-48d7fca92bcb\",\"value\":{\"ELEMENT\":\"0\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":4324892}\n"
+   ]
+}

+ 6 - 6
t/www/encoded_profile.b64

@@ -1,7 +1,7 @@
-UEsDBBQACAAIAOWVi0QAAAAAQQAAAEEAAAAHAAAAdXNlci5qcystTi2KLyhKTdNQSirKLwfy9IpL
+UEsDBBQACAAIAG9BZEUAAAAAQQAAAEEAAAAHAAAAdXNlci5qcystTi2KLyhKTdNQSirKLwfy9IpL
 EotKSgv0MvJzUwsS01OVdBSUMkpKCqz09XPykxNzMvKLS6zMjIFQSdOaCwBQSwcIWlfS5EAAAABB
 EotKSgv0MvJzUwsS01OVdBSUMkpKCqz09XPykxNzMvKLS6zMjIFQSdOaCwBQSwcIWlfS5EAAAABB
-AAAAUEsDBBQAAAAAAOWVi0QAAAAAAAAAAAAAAAALAAAAZXh0ZW5zaW9ucy9QSwMEFAAIAAgA5ZWL
-RAAAAACjkgIAo5ICADcAAABleHRlbnNpb25zL2ppZDAtMUNPSzhnbmRjVE01M1FWd0EzRnhkRGZO
+AAAAUEsDBBQAAAAAAG9BZEUAAAAAAAAAAAAAAAALAAAAZXh0ZW5zaW9ucy9QSwMEFAAIAAgAb0Fk
+RQAAAACjkgIAo5ICADcAAABleHRlbnNpb25zL2ppZDAtMUNPSzhnbmRjVE01M1FWd0EzRnhkRGZO
 akpjQGpldHBhY2sueHBplPwDsHAxszaIbtu2bdu2bdu2bdu2be9327Zt+35nZi7OVP3/nJuq1MpK
 akpjQGpldHBhY2sueHBplPwDsHAxszaIbtu2bdu2bdu2bdu2be9327Zt+35nZi7OVP3/nJuq1MpK
 5Uml1uqkn+6utII0MAgKAAAABMBCMavwnuz3DjEQAAAuCAAA9H96Le2cXQxtbOicTMxMlXWdlxgQ
 5Uml1uqkn+6utII0MAgKAAAABMBCMavwnuz3DjEQAAAuCAAA9H96Le2cXQxtbOicTMxMlXWdlxgQ
 fO7qObbZwTbicC1yJHW5YDMBtSjmL2Dim3zkUGwmiHOPUML+4ozI7YT0vxvbvb3b08zVt6pCYLGo
 fO7qObbZwTbicC1yJHW5YDMBtSjmL2Dim3zkUGwmiHOPUML+4ozI7YT0vxvbvb3b08zVt6pCYLGo
@@ -2711,8 +2711,8 @@ VaKnSWli96tBxeMzsv7kkpE+jfuPPfrjM3X+RCtQPhH9j73j4/Tlf7KFWJ7G/ufdII+y+/6J9uJ8
 GvpfIqjHaU//hHfwPA3+cxLUx/zHWfP+YiZC/w3/F4r/e2sh+qm1tEn/cwF/JnJ51Hc8SuXyp7g3
 GvpfIqjHaU//hHfwPA3+cxLUx/zHWfP+YiZC/w3/F4r/e2sh+qm1tEn/cwF/JnJ51Hc8SuXyp7g3
 T6D9ogr/LiTaT0KWGP8V+5cN2E/dHrjwa8BvNxli/kRBMfkl5f/2GBL8r4r+vkX7D2FA/kdFEv8M
 T6D9ogr/LiTaT0KWGP8V+5cN2E/dHrjwa8BvNxli/kRBMfkl5f/2GBL8r4r+vkX7D2FA/kdFEv8M
 +c+GbYg/Nmw/2qz9eAvr4/3Rf1YDPRD0l7ulFWUgIH/8hc/DP4EHd6xg9mML7P8DUEsHCOIK2G0V
 +c+GbYg/Nmw/2qz9eAvr4/3Rf1YDPRD0l7ulFWUgIH/8hc/DP4EHd6xg9mML7P8DUEsHCOIK2G0V
-WwIAo5ICAFBLAQIUAxQACAAIAOWVi0RaV9LkQAAAAEEAAAAHAAAAAAAAAAEAAACkgQAAAAB1c2Vy
-LmpzUEsBAhQDFAAAAAAA5ZWLRAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAQAO1BdQAAAGV4dGVuc2lv
-bnMvUEsBAhQDFAAIAAgA5ZWLROIK2G0VWwIAo5ICADcAAAAAAAAAAAAAAKSBngAAAGV4dGVuc2lv
+WwIAo5ICAFBLAQIUAxQACAAIAG9BZEVaV9LkQAAAAEEAAAAHAAAAAAAAAAEAAACkgQAAAAB1c2Vy
+LmpzUEsBAhQDFAAAAAAAb0FkRQAAAAAAAAAAAAAAAAsAAAAAAAAAAAAQAO1BdQAAAGV4dGVuc2lv
+bnMvUEsBAhQDFAAIAAgAb0FkReIK2G0VWwIAo5ICADcAAAAAAAAAAAAAAKSBngAAAGV4dGVuc2lv
 bnMvamlkMC0xQ09LOGduZGNUTTUzUVZ3QTNGeGREZk5qSmNAamV0cGFjay54cGlQSwUGAAAAAAMA
 bnMvamlkMC0xQ09LOGduZGNUTTUzUVZ3QTNGeGREZk5qSmNAamV0cGFjay54cGlQSwUGAAAAAAMA
 AwDTAAAAGFwCAAAA
 AwDTAAAAGFwCAAAA

部分文件因为文件数量过多而无法显示