Browse Source

Merge branch 'master' into action-chains-experiment

Emmanuel Peroumalnaik 11 years ago
parent
commit
fe4055aa0a
44 changed files with 925 additions and 597 deletions
  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*
 *.sublime*
 .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> <vagrant@precise32.(none)>
 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> <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
 before_install:
    - 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.email $HOSTNAME":not-for-mail@travis-ci.org"
 install:
    - 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:
    - dzil smoke --release --author

+ 19 - 3
Changes

@@ -1,17 +1,33 @@
 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]
         - 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]
         - Specify minimum compatible version of Moo dep
         - Make Driver.pm more easily subclassed ( ea68e06, 63e78e3 )
         - Get TravisCI passing again
+        - #164 Roll & use our own mocking classes
+        - #152 Gracefully catch more error cases
 
         [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
         [NEW FEATURES]

+ 1 - 1
README.md

@@ -1,6 +1,6 @@
 # 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
 automated web application UI tests in any programming language against

+ 2 - 1
cpanfile

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

+ 4 - 5
dist.ini

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

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

@@ -69,6 +69,11 @@ has '_cmds' => (
                 'url'                => 'session/:sessionId/window/:windowHandle/position',
                 'no_content_success' => 0
             },
+            'maximizeWindow' => {
+                'method'             => 'POST',
+                'url'                => 'session/:sessionId/window/:windowHandle/maximize',
+                'no_content_success' => 1
+            },
             'setWindowSize' => {
                 'method'             => 'POST',
                 'url'                => 'session/:sessionId/window/:windowHandle/size',
@@ -279,11 +284,6 @@ has '_cmds' => (
                 'url'                => 'session/:sessionId/window',
                 'no_content_success' => 1
             },
-            'dragElement' => {
-                'method'             => 'POST',
-                'url'                => 'session/:sessionId/element/:id/drag',
-                'no_content_success' => 1
-            },
             'getElementSize' => {
                 'method'             => 'GET',
                 '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 {
     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 {
@@ -541,14 +535,14 @@ sub _request_new_session {
     $self->remote_conn->check_status();
     # command => 'newSession' to fool the tests of commands implemented
     # TODO: rewrite the testing better, this is so fragile.
-    my $resource_new_session = { 
+    my $resource_new_session = {
         method => $self->commands->get_method('newSession'),
         url => $self->commands->get_url('newSession'),
         no_content_success => $self->commands->get_no_content_success('newSession'),
     };
     my $rc = $self->remote_conn;
     my $resp = $rc->request(
-        $resource_new_session, 
+        $resource_new_session,
         $args,
     );
     if ( ( defined $resp->{'sessionId'} ) && $resp->{'sessionId'} ne '' ) {
@@ -556,8 +550,13 @@ sub _request_new_session {
     }
     else {
         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;
     }
 }
@@ -1588,6 +1587,30 @@ sub set_window_size {
     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
 
  Description:
@@ -1775,8 +1798,7 @@ sub find_element {
             driver => $self );
     }
     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 ;
     }
     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 );
     }
     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;
     }
     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 {
     my ($self, $xpi) = @_;
 
+    croak 'File not found: ' . $xpi unless -e $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);
 }

+ 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';
 
 
 # override get_params so we do not rewrite the parameters
 
-sub get_params { 
+sub get_params {
     my $self = shift;
     my $args = shift;
     my $data = {};
@@ -17,17 +17,17 @@ sub get_params {
     $data->{'method'} = $self->get_method($command);
     $data->{'no_content_success'} = $self->get_no_content_success($command);
     $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 $method_name = '';
     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;
         }
     }

+ 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
 
-use Moo; 
-use JSON; 
+use Moo;
+use JSON;
 use Carp;
 use Try::Tiny;
-use HTTP::Response; 
-use Data::Dumper; 
+use HTTP::Response;
+use Data::Dumper;
 
 extends 'Selenium::Remote::RemoteConnection';
 
@@ -16,66 +16,66 @@ has 'spec' => (
     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 '',
         map +( 0 .. 9, 'a' .. 'z', 'A' .. 'Z' )[ rand( 10 + 26 * 2 ) ], 1 .. 50;
         return $id;
     },
 );
 
-has 'record' => ( 
-    is => 'ro', 
-    default => sub { 0 } 
+has 'record' => (
+    is => 'ro',
+    default => sub { 0 }
 );
 
-has 'replay' => ( 
+has 'replay' => (
     is => 'ro',
 );
 
-has 'replay_file' => ( 
+has 'replay_file' => (
     is => 'ro',
 );
 
 has 'session_store' => (
-    is => 'rw', 
+    is => 'rw',
     default => sub { {} }
 );
 
-has 'session_id' => ( 
+has 'session_id' => (
     is => 'rw',
     default => sub { undef },
 );
 
 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->port('4444');
-    if ($self->replay) { 
+    if ($self->replay) {
         $self->load_session_store($self->replay_file);
     }
 }
 
-sub check_status { 
+sub check_status {
     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);
     open (my $fh, '<', $file) or croak  "Opening '$file' failed";
     # here we use a fake session id since we have no way of figuring out
     # which session is good or not
-    local $/ = undef; 
+    local $/ = undef;
 
     my $json = JSON->new;
     $json->allow_blessed;
@@ -84,19 +84,19 @@ sub load_session_store {
     $self->session_store($decoded_json);
 }
 
-sub dump_session_store { 
-    my $self = shift; 
+sub dump_session_store {
+    my $self = shift;
     my ($file) = @_;
     open (my $fh, '>', $file) or croak "Opening '$file' failed";
     my $session_store = $self->session_store;
     my $dump = {};
-    foreach my $path (keys %{$session_store}) { 
+    foreach my $path (keys %{$session_store}) {
         $dump->{$path} = $session_store->{$path};
     }
     my $json = JSON->new;
     $json->allow_blessed;
     my $json_session = $json->allow_nonref->utf8->pretty->encode($dump);
-    print $fh $json_session; 
+    print $fh $json_session;
     close ($fh);
 }
 
@@ -109,7 +109,7 @@ sub request {
     my $content            = '';
     my $json               = JSON->new;
     $json->allow_blessed;
-    if ($params) { 
+    if ($params) {
         $content = $json->allow_nonref->utf8->canonical(1)->encode($params);
     }
     my $url_params = $resource->{url_params};
@@ -169,26 +169,26 @@ __END__
 
 =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
 
 =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
 
-=item * 
-mock responses to specific functions 
+=item *
+mock responses to specific functions
 
 =back
 
 =head1 SYNOPSIS
 
-=head2 Record interactions 
-    
+=head2 Record interactions
+
     #!perl
     use strict;
     use warnings;
@@ -204,7 +204,7 @@ mock responses to specific functions
     my $driver = Selenium::Remote::Driver->new( remote_conn => $mock_connection );
 
     # 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;
 
     # do all the selenium things and quit
@@ -216,10 +216,10 @@ mock responses to specific functions
     $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]
         ...
     }
@@ -233,11 +233,11 @@ The reason why we store array of responses is that the exact same request can be
     use warnings;
     use Test::More;
     use Test::Selenium::Remote::Driver;
-    use Selenium::Remote::Mock::RemoteConnection; 
+    use Selenium::Remote::Mock::RemoteConnection;
     my $mock_connection_2 =
       Selenium::Remote::Mock::RemoteConnection->new( replay => 1,
         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 =
       Test::Selenium::Remote::Driver->new( remote_conn => $mock_connection_2, javascript => 1, version => '' );
     $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;
     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>.
-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.
 
 =head2 Mock responses
 
-    
+
     #!perl
     use Test::More;
     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();
 
-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.
-To accomplish this we need : 
+To accomplish this we need :
 
 =over
 
 =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>.
-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:
     { session_id => 'some_session_id'}
 
-=item * 
+=item *
 $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'}
 
 
@@ -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.
 
-=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.
 
 =back
 
-=head1 BUGS 
+=head1 BUGS
 
 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 $status;
     try {
@@ -57,7 +57,6 @@ sub check_status {
     unless ($status->{cmd_status} eq 'OK') {
         croak "Selenium server did not return proper status";
     }
-    
 }
 
 
@@ -105,7 +104,7 @@ sub request {
     $header->header('Accept' => 'application/json');
     my $request = HTTP::Request->new($method, $fullurl, $header, $content);
     my $response = $self->ua->request($request);
-    if ($dont_process_response) { 
+    if ($dont_process_response) {
         return $response;
     }
     return $self->_process_response($response, $no_content_success);
@@ -117,7 +116,11 @@ sub _process_response {
     my $json = JSON->new;
 
     if ($response->is_redirect) {
-        return $self->request('GET', $response->header('location'));
+        my $redirect = {
+            method => 'GET',
+            url    => $response->header('location')
+        };
+        return $self->request($redirect);
     }
     else {
         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
 
 use Moo;
-use Carp qw(croak);
+use Carp qw(carp croak);
 
 =head1 DESCRIPTION
 
@@ -356,19 +356,25 @@ sub is_hidden {
  Usage:
     $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
 
 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

+ 21 - 47
t/01-driver.t

@@ -10,30 +10,14 @@ use Selenium::Remote::Driver;
 use Selenium::Remote::Mock::Commands;
 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 $website = 'http://localhost:63636';
@@ -181,7 +165,6 @@ WINDOW: {
     is(ref $ret, 'ARRAY', 'Received all window handles');
     $ret = $driver->set_window_position(100,100);
     is($ret, 1, 'Set the window position to 100, 100');
-    $driver->pause(500);
     $ret = $driver->get_window_position();
     is ($ret->{'x'}, 100, 'Got the right X Co-ordinate');
     is ($ret->{'y'}, 100, 'Got the right Y Co-ordinate');
@@ -190,6 +173,17 @@ WINDOW: {
     $ret = $driver->get_window_size();
     is ($ret->{'height'}, 640, 'Got the right height');
     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();
     ok($ret =~ m/^<html/i, 'Received page source');
     eval {$driver->set_implicit_wait_timeout(20001);};
@@ -259,7 +253,7 @@ FIND: {
       . " at " . __FILE__ . " line " . (__LINE__+1);
     eval { $driver->find_element("element_that_doesnt_exist","id"); };
     chomp $@;
-    is($@,$expected_err.".","find_element croaks properly");
+    like($@,qr/$expected_err/,"find_element croaks properly");
     my $elems = $driver->find_elements("//input[\@id='checky']");
     is(scalar(@$elems),1, 'Got an arrayref of WebElements');
     my @array_elems = $driver->find_elements("//input[\@id='checky']");
@@ -340,7 +334,7 @@ PAUSE: {
 }
 
 AUTO_CLOSE: {
-    my %stay_open_selenium_args = %selenium_args; 
+    my %stay_open_selenium_args = %selenium_args;
     $stay_open_selenium_args{auto_close} = 0;
     my $stayOpen = Selenium::Remote::Driver->new(
         %stay_open_selenium_args
@@ -414,9 +408,9 @@ BASE_URL: {
                 spec => {
                     get =>
                       sub { my ( undef, $params ) = @_; return $params->{url} }
-                },
+                  },
                 mock_cmds => $mock_commands
-              ),
+            ),
             commands => $mock_commands,
         );
         my $got = $base_url_driver->get($test->{url});
@@ -461,24 +455,4 @@ QUIT: {
     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;

+ 7 - 25
t/02-webelement.t

@@ -5,28 +5,14 @@ use Test::More;
 use Selenium::Remote::Driver;
 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 $website = 'http://localhost:63636';
@@ -105,7 +91,7 @@ IMAGES: {
     my $y = $ret->{'y'};
   TODO: {
         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();
         is($ret->{'x'}, ($x+200), 'Moved to new x 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');
 }
 
-if ($record) { 
-    $driver->remote_conn->dump_session_store("t/mock-recordings/$mock_file");
-}
-
 done_testing;

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

@@ -33,7 +33,6 @@ my $todo_list = {
    'POST session/:sessionId/window/:windowHandle/position' => 1,
    'GET session/:sessionId/window/:windowHandle/position'  => 1,
    'POST session/:sessionId/keys'                          => 1,
-   'POST session/:sessionId/window/:windowHandle/maximize' => 1,
    'GET session/:sessionId/location'                       => 1,
    'POST session/:sessionId/location'                      => 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 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',
     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;
 
 my $s = Test::Selenium::Remote::Driver->new(
@@ -58,7 +44,6 @@ my $handles = $s->get_window_handles;
 is scalar(@$handles), 2;
 # We don't assume any order in the @$handles array:
 my $cpan_handle = $perl_handle eq $handles->[0] ? $handles->[1] : $handles->[0];
-diag explain $handles;
 
 $s->switch_to_window($cpan_handle);
 $s->title_is($cpan_title);
@@ -71,7 +56,3 @@ $s->title_is($cpan_title);
 
 $s->switch_to_window('perlorg');
 $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::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: {
     my $profile = Selenium::Remote::Driver::Firefox::Profile->new;
     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;
 
     # Set this to true to re-encode the profile. This should not need
     # to happen often.
     my $create_new_profile = 0;
-    if ($record && $create_new_profile) {
+    if ($create_new_profile) {
         $profile->set_preference(
             'browser.startup.homepage' => $website
         );
@@ -61,7 +48,7 @@ CUSTOM_EXTENSION_LOADED: {
         #     contentScript: 'document.body.innerHTML = ' +
         #         ' "<h1>Page matches ruleset</h1>";'
         # });
-        $profile->add_extension('t/www/redisplay.xpi');
+        $profile->add_extension($fixture_dir . 'redisplay.xpi');
 
         $encoded = $profile->_encode;
 
@@ -74,15 +61,17 @@ CUSTOM_EXTENSION_LOADED: {
         $encoded = do {local $/ = undef; <$fh>};
         close ($fh);
     }
-    my %driver_args = %selenium_args; 
+    my %driver_args = %selenium_args;
     $driver_args{extra_capabilities} = { firefox_profile => $encoded };
     my $driver = Selenium::Remote::Driver->new(%driver_args);
 
     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->find_element("h1", "tag_name");
     cmp_ok($driver->get_current_url, '=~', qr/localhost/i,
@@ -167,33 +156,27 @@ PREFERENCES: {
 
 CROAKING: {
     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;

+ 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 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
 my $t = Test::Selenium::Remote::Driver->new(
@@ -38,9 +22,4 @@ $t->get_ok('http://www.google.com');
 $t->title_like(qr/Google/);
 $t->body_like(qr/Google/);
 
-if ($record) { 
-    $t->remote_conn->dump_session_store("t/mock-recordings/$mock_file");
-}
-
-
 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->{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->{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" }};
@@ -36,7 +36,7 @@ $successful_element->is_enabled_ok;
 $successful_element->is_displayed_ok;
 $successful_element->send_keys_ok('Hello World');
 $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->value_is( 'my_value', 'Got an my_value value?' );
 $successful_element->value_isnt( 'BOOM', 'Not BOOM.' );

+ 42 - 37
t/bin/record.pl

@@ -2,53 +2,53 @@
 
 use strict;
 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') {
-        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 {
-        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') {
         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 IO::Socket::INET;
 
-
 BEGIN: {
     unless (use_ok('Selenium::Remote::Driver')) {
         BAIL_OUT("Couldn't load Selenium::Remote::Driver");

+ 4 - 3
t/http-server.pl

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

File diff suppressed because it is too large
+ 30 - 0
t/mock-recordings/01-driver-mock-MSWin32.json


File diff suppressed because it is too large
+ 44 - 43
t/mock-recordings/01-driver-mock-darwin.json


File diff suppressed because it is too large
+ 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"
+   ]
+}

File diff suppressed because it is too large
+ 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}}" : [
-      "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"
    ]
 }

File diff suppressed because it is too large
+ 7 - 0
t/mock-recordings/firefox-profile-mock-MSWin32.json


File diff suppressed because it is too large
+ 0 - 0
t/mock-recordings/firefox-profile-mock-darwin.json


File diff suppressed because it is too large
+ 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
-AAAAUEsDBBQAAAAAAOWVi0QAAAAAAAAAAAAAAAALAAAAZXh0ZW5zaW9ucy9QSwMEFAAIAAgA5ZWL
-RAAAAACjkgIAo5ICADcAAABleHRlbnNpb25zL2ppZDAtMUNPSzhnbmRjVE01M1FWd0EzRnhkRGZO
+AAAAUEsDBBQAAAAAAG9BZEUAAAAAAAAAAAAAAAALAAAAZXh0ZW5zaW9ucy9QSwMEFAAIAAgAb0Fk
+RQAAAACjkgIAo5ICADcAAABleHRlbnNpb25zL2ppZDAtMUNPSzhnbmRjVE01M1FWd0EzRnhkRGZO
 akpjQGpldHBhY2sueHBplPwDsHAxszaIbtu2bdu2bdu2bdu2be9327Zt+35nZi7OVP3/nJuq1MpK
 5Uml1uqkn+6utII0MAgKAAAABMBCMavwnuz3DjEQAAAuCAAA9H96Le2cXQxtbOicTMxMlXWdlxgQ
 fO7qObbZwTbicC1yJHW5YDMBtSjmL2Dim3zkUGwmiHOPUML+4ozI7YT0vxvbvb3b08zVt6pCYLGo
@@ -2711,8 +2711,8 @@ VaKnSWli96tBxeMzsv7kkpE+jfuPPfrjM3X+RCtQPhH9j73j4/Tlf7KFWJ7G/ufdII+y+/6J9uJ8
 GvpfIqjHaU//hHfwPA3+cxLUx/zHWfP+YiZC/w3/F4r/e2sh+qm1tEn/cwF/JnJ51Hc8SuXyp7g3
 T6D9ogr/LiTaT0KWGP8V+5cN2E/dHrjwa8BvNxli/kRBMfkl5f/2GBL8r4r+vkX7D2FA/kdFEv8M
 +c+GbYg/Nmw/2qz9eAvr4/3Rf1YDPRD0l7ulFWUgIH/8hc/DP4EHd6xg9mML7P8DUEsHCOIK2G0V
-WwIAo5ICAFBLAQIUAxQACAAIAOWVi0RaV9LkQAAAAEEAAAAHAAAAAAAAAAEAAACkgQAAAAB1c2Vy
-LmpzUEsBAhQDFAAAAAAA5ZWLRAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAQAO1BdQAAAGV4dGVuc2lv
-bnMvUEsBAhQDFAAIAAgA5ZWLROIK2G0VWwIAo5ICADcAAAAAAAAAAAAAAKSBngAAAGV4dGVuc2lv
+WwIAo5ICAFBLAQIUAxQACAAIAG9BZEVaV9LkQAAAAEEAAAAHAAAAAAAAAAEAAACkgQAAAAB1c2Vy
+LmpzUEsBAhQDFAAAAAAAb0FkRQAAAAAAAAAAAAAAAAsAAAAAAAAAAAAQAO1BdQAAAGV4dGVuc2lv
+bnMvUEsBAhQDFAAIAAgAb0FkReIK2G0VWwIAo5ICADcAAAAAAAAAAAAAAKSBngAAAGV4dGVuc2lv
 bnMvamlkMC0xQ09LOGduZGNUTTUzUVZ3QTNGeGREZk5qSmNAamV0cGFjay54cGlQSwUGAAAAAAMA
 AwDTAAAAGFwCAAAA

Some files were not shown because too many files changed in this diff