Эх сурвалжийг харах

Implementation completed with very basic tests

Emmanuel Peroumalnaik 10 жил өмнө
parent
commit
3902fa1670

+ 24 - 5
lib/Selenium/Remote/Driver/ActionChains.pm

@@ -3,12 +3,13 @@ package Selenium::Remote::Driver::ActionChains;
 use Moo; 
 
 has 'driver' => ( 
-    is => 'ro', 
+    is => 'rw', 
 );
 
 has 'actions' => ( 
     is => 'lazy', 
     builder => sub { [] },
+    clearer => 1,
 );
 
 sub perform { 
@@ -25,7 +26,7 @@ sub click {
        $self->move_to_element($element); 
     }
     # left click
-    push @{$self->actions}, sub { $self->driver->click(0) };
+    push @{$self->actions}, sub { $self->driver->click('LEFT') };
     $self; 
 }
 
@@ -46,7 +47,7 @@ sub context_click {
        $self->move_to_element($element); 
     }
     # right click
-    push @{$self->actions}, sub { $self->driver->click(2) }; 
+    push @{$self->actions}, sub { $self->driver->click('RIGHT') }; 
     $self; 
 }
 
@@ -121,7 +122,8 @@ sub key_down {
     if (defined($element)) { 
         $self->click($element);
     }
-    push @{ $self->actions }, $self->driver->send_keys_to_active_element(@$value);
+    push @{ $self->actions }, sub { $self->driver->send_keys_to_active_element(@$value) };
+    $self;
 }
 
 sub key_up { 
@@ -130,7 +132,24 @@ sub key_up {
     if (defined($element)) { 
         $self->click($element);
     }
-    push @{ $self->actions }, $self->driver->send_keys_to_active_element(@$value);
+    push @{ $self->actions }, sub { $self->driver->send_keys_to_active_element(@$value) };
+    $self;
+}
+
+sub send_keys { 
+    my $self = shift; 
+    my $keys = shift; 
+    push @{ $self->actions} , sub { $self->driver->get_active_element->send_keys($keys) };
+    $self;
 }
 
+sub send_keys_to_element { 
+    my $self = shift; 
+    my ($element,$keys) = @_;
+    push @{ $self->actions }, sub { $element->send_keys($keys) };
+    $self;
+}
+
+
+
 1;

+ 28 - 32
t/11-action-chains.t

@@ -3,44 +3,40 @@ use warnings;
 
 use JSON;
 use Test::More;
-use Selenium::Remote::Driver;
-use Selenium::Remote::Mock::Commands;
-use Selenium::Remote::Mock::RemoteConnection;
+use Test::Selenium::Remote::Driver;
 use Selenium::Remote::Driver::ActionChains;
+use Selenium::Remote::WDKeys 'KEYS';
 
-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'
+use FindBin;
+use lib $FindBin::Bin . '/lib';
+use TestHarness;
+
+my $harness = TestHarness->new(
+    this_file => $FindBin::Script
 );
+my %selenium_args = %{ $harness->base_caps };
 
+my $driver = Test::Selenium::Remote::Driver->new(%selenium_args);
+my $action_chains = Selenium::Remote::Driver::ActionChains->new(driver => $driver);
 
-my $mock_file = "11-action-chains-mock-$os.json";
-if (!$record && !(-e "t/mock-recordings/$mock_file")) {
-    plan skip_all => "Mocking of tests is not been enabled for this platform";
-}
+$driver->get('https://www.google.com');
+my $input_text = $driver->find_element("//input[\@type='text']");
+# type text to search on Google and press 'Enter'
+$action_chains->send_keys_to_element( $input_text, "test" )
+  ->key_down([KEYS->{'enter'}])->key_up([KEYS->{'enter'}])->perform;
+$driver->find_elements_ok("//*[\@class='hdtb-mitem']","We found Google's navbar");
+$driver->quit;
+
+$driver = Test::Selenium::Remote::Driver->new(%selenium_args);
+$action_chains->driver($driver);
+$action_chains->clear_actions;
+
+$driver->get("http://medialize.github.io/jQuery-contextMenu/demo.html"); 
+my $right_click_zone = $driver->find_element("//*[contains(text(),'right click me')]");
+$action_chains->context_click($right_click_zone)->perform;
+$driver->find_element("//*[text()='Paste']")->is_displayed_ok("The menu is correctly displayed on right click");
+$driver->quit;
 
-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 $driver = Selenium::Remote::Driver->new(%selenium_args);
-my $action_chains = Selenium::Remote::Driver::ActionChains->new(driver => $driver);
-$driver->get('http://html5demos.com/drag');
-$driver->pause('1000');
-my $src = $driver->find_element('a#two', 'css'); 
-my $tgt = $driver->find_element('div#bin','css');
-$action_chains->drag_and_drop($src,$tgt)->perform();
-if ($record) { 
-    $driver->remote_conn->dump_session_store("t/mock-recordings/$mock_file");
-}
 
 done_testing;

+ 35 - 18
t/mock-recordings/11-action-chains-mock-linux.json

@@ -1,29 +1,46 @@
 {
-   "POST session/79f6b4ac-51f4-4ef2-ad45-a5876a8dee15/buttonup {}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 22 Oct 2014 08:36:26 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: Wed, 22 Oct 2014 08:36:26 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"79f6b4ac-51f4-4ef2-ad45-a5876a8dee15\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":933658728}\n"
+   "POST session/3931ba86-e2dc-4dcb-b0b8-ff2974c59db8/url {\"url\":\"https://www.google.com\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 13 May 2015 13:41:17 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-52-generic amd64 java/1.7.0_79\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, 13 May 2015 13:41:18 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"3931ba86-e2dc-4dcb-b0b8-ff2974c59db8\",\"status\":0,\"state\":\"success\",\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":23829224}\n"
    ],
-   "POST session/79f6b4ac-51f4-4ef2-ad45-a5876a8dee15/buttondown {}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 22 Oct 2014 08:36:26 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: Wed, 22 Oct 2014 08:36:26 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"79f6b4ac-51f4-4ef2-ad45-a5876a8dee15\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":297666707}\n"
+   "POST session/3931ba86-e2dc-4dcb-b0b8-ff2974c59db8/elements {\"using\":\"xpath\",\"value\":\"//*[@class='hdtb-mitem']\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 13 May 2015 13:41:18 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-52-generic amd64 java/1.7.0_79\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, 13 May 2015 13:41:18 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"3931ba86-e2dc-4dcb-b0b8-ff2974c59db8\",\"status\":0,\"state\":\"success\",\"value\":[],\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1717827636}\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, 22 Oct 2014 08:36:18 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: Wed, 22 Oct 2014 08:36:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"79f6b4ac-51f4-4ef2-ad45-a5876a8dee15\",\"value\":{\"platform\":\"LINUX\",\"acceptSslCerts\":true,\"javascriptEnabled\":true,\"browserName\":\"firefox\",\"rotatable\":false,\"locationContextEnabled\":true,\"webdriver.remote.sessionid\":\"79f6b4ac-51f4-4ef2-ad45-a5876a8dee15\",\"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\":2077443790}\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, 13 May 2015 13:41:16 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-52-generic amd64 java/1.7.0_79\nContent-Length: 547\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 13 May 2015 13:41:17 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"3931ba86-e2dc-4dcb-b0b8-ff2974c59db8\",\"status\":0,\"state\":null,\"value\":{\"platform\":\"LINUX\",\"javascriptEnabled\":true,\"acceptSslCerts\":true,\"browserName\":\"firefox\",\"rotatable\":false,\"locationContextEnabled\":true,\"webdriver.remote.sessionid\":\"3931ba86-e2dc-4dcb-b0b8-ff2974c59db8\",\"version\":\"37.0.2\",\"databaseEnabled\":true,\"cssSelectorsEnabled\":true,\"handlesAlerts\":true,\"webStorageEnabled\":true,\"nativeEvents\":false,\"applicationCacheEnabled\":true,\"takesScreenshot\":true},\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1923882051}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 13 May 2015 13:41:18 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-52-generic amd64 java/1.7.0_79\nContent-Length: 546\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Wed, 13 May 2015 13:41:20 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"22a948eb-4101-45dd-92a5-7181b7b03240\",\"status\":0,\"state\":null,\"value\":{\"platform\":\"LINUX\",\"javascriptEnabled\":true,\"acceptSslCerts\":true,\"browserName\":\"firefox\",\"rotatable\":false,\"locationContextEnabled\":true,\"webdriver.remote.sessionid\":\"22a948eb-4101-45dd-92a5-7181b7b03240\",\"version\":\"37.0.2\",\"databaseEnabled\":true,\"cssSelectorsEnabled\":true,\"handlesAlerts\":true,\"webStorageEnabled\":true,\"nativeEvents\":false,\"applicationCacheEnabled\":true,\"takesScreenshot\":true},\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":898359747}\n"
    ],
-   "POST session/79f6b4ac-51f4-4ef2-ad45-a5876a8dee15/url {\"url\":\"http://html5demos.com/drag\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 22 Oct 2014 08:36: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: Wed, 22 Oct 2014 08:36:25 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"79f6b4ac-51f4-4ef2-ad45-a5876a8dee15\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":745285224}\n"
+   "POST session/22a948eb-4101-45dd-92a5-7181b7b03240/url {\"url\":\"http://medialize.github.io/jQuery-contextMenu/demo.html\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 13 May 2015 13:41:20 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-52-generic amd64 java/1.7.0_79\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, 13 May 2015 13:41:21 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"22a948eb-4101-45dd-92a5-7181b7b03240\",\"status\":0,\"state\":\"success\",\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":169615849}\n"
    ],
-   "POST session/79f6b4ac-51f4-4ef2-ad45-a5876a8dee15/moveto {\"element\":\"1\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 22 Oct 2014 08:36:26 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: Wed, 22 Oct 2014 08:36:26 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"79f6b4ac-51f4-4ef2-ad45-a5876a8dee15\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":521065303}\n"
+   "POST session/22a948eb-4101-45dd-92a5-7181b7b03240/click {\"button\":2}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 13 May 2015 13:41:21 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-52-generic amd64 java/1.7.0_79\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, 13 May 2015 13:41:21 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"22a948eb-4101-45dd-92a5-7181b7b03240\",\"status\":0,\"state\":\"success\",\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1285538535}\n"
    ],
-   "POST session/79f6b4ac-51f4-4ef2-ad45-a5876a8dee15/element {\"using\":\"css selector\",\"value\":\"a#two\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 22 Oct 2014 08:36:26 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: Wed, 22 Oct 2014 08:36:26 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"79f6b4ac-51f4-4ef2-ad45-a5876a8dee15\",\"value\":{\"ELEMENT\":\"0\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1238886898}\n"
+   "POST session/22a948eb-4101-45dd-92a5-7181b7b03240/moveto {\"element\":\"0\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 13 May 2015 13:41:21 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-52-generic amd64 java/1.7.0_79\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, 13 May 2015 13:41:21 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"22a948eb-4101-45dd-92a5-7181b7b03240\",\"status\":0,\"state\":\"success\",\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":612866572}\n"
    ],
-   "POST session/79f6b4ac-51f4-4ef2-ad45-a5876a8dee15/element {\"using\":\"css selector\",\"value\":\"div#bin\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 22 Oct 2014 08:36:26 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: Wed, 22 Oct 2014 08:36:26 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"79f6b4ac-51f4-4ef2-ad45-a5876a8dee15\",\"value\":{\"ELEMENT\":\"1\"},\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":692495628}\n"
+   "DELETE session/22a948eb-4101-45dd-92a5-7181b7b03240 {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 13 May 2015 13:41:22 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-52-generic amd64 java/1.7.0_79\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, 13 May 2015 13:41:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"22a948eb-4101-45dd-92a5-7181b7b03240\",\"status\":0,\"state\":\"success\",\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":2134262868}\n"
    ],
-   "POST session/79f6b4ac-51f4-4ef2-ad45-a5876a8dee15/moveto {\"element\":\"0\"}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 22 Oct 2014 08:36:26 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: Wed, 22 Oct 2014 08:36:26 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"79f6b4ac-51f4-4ef2-ad45-a5876a8dee15\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":442237451}\n"
+   "POST session/3931ba86-e2dc-4dcb-b0b8-ff2974c59db8/keys {\"value\":[\"\"]}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 13 May 2015 13:41:18 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-52-generic amd64 java/1.7.0_79\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, 13 May 2015 13:41:18 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"3931ba86-e2dc-4dcb-b0b8-ff2974c59db8\",\"status\":0,\"state\":\"success\",\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1952000828}\n",
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 13 May 2015 13:41:18 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-52-generic amd64 java/1.7.0_79\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, 13 May 2015 13:41:18 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"3931ba86-e2dc-4dcb-b0b8-ff2974c59db8\",\"status\":0,\"state\":\"success\",\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":916855601}\n"
    ],
-   "POST session/79f6b4ac-51f4-4ef2-ad45-a5876a8dee15/click {\"button\":0}" : [
-      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 22 Oct 2014 08:36:26 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: Wed, 22 Oct 2014 08:36:26 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"status\":0,\"sessionId\":\"79f6b4ac-51f4-4ef2-ad45-a5876a8dee15\",\"value\":null,\"state\":\"success\",\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":2065196531}\n"
+   "POST session/22a948eb-4101-45dd-92a5-7181b7b03240/element {\"using\":\"xpath\",\"value\":\"//*[contains(text(),'right click me')]\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 13 May 2015 13:41:21 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-52-generic amd64 java/1.7.0_79\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, 13 May 2015 13:41:21 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"22a948eb-4101-45dd-92a5-7181b7b03240\",\"status\":0,\"state\":\"success\",\"value\":{\"ELEMENT\":\"0\"},\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":500426191}\n"
+   ],
+   "POST session/3931ba86-e2dc-4dcb-b0b8-ff2974c59db8/element/0/value {\"value\":[\"test\"]}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 13 May 2015 13:41:18 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-52-generic amd64 java/1.7.0_79\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, 13 May 2015 13:41:18 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"3931ba86-e2dc-4dcb-b0b8-ff2974c59db8\",\"status\":0,\"state\":\"success\",\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1498447564}\n"
+   ],
+   "GET session/22a948eb-4101-45dd-92a5-7181b7b03240/element/1/displayed {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 13 May 2015 13:41:22 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-52-generic amd64 java/1.7.0_79\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, 13 May 2015 13:41:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"22a948eb-4101-45dd-92a5-7181b7b03240\",\"status\":0,\"state\":\"success\",\"value\":true,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1325008783}\n"
+   ],
+   "DELETE session/3931ba86-e2dc-4dcb-b0b8-ff2974c59db8 {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 13 May 2015 13:41:18 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-52-generic amd64 java/1.7.0_79\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, 13 May 2015 13:41:18 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"3931ba86-e2dc-4dcb-b0b8-ff2974c59db8\",\"status\":0,\"state\":\"success\",\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1760992235}\n"
+   ],
+   "POST session/3931ba86-e2dc-4dcb-b0b8-ff2974c59db8/element {\"using\":\"xpath\",\"value\":\"//input[@type='text']\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 13 May 2015 13:41:18 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-52-generic amd64 java/1.7.0_79\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, 13 May 2015 13:41:18 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"3931ba86-e2dc-4dcb-b0b8-ff2974c59db8\",\"status\":0,\"state\":\"success\",\"value\":{\"ELEMENT\":\"0\"},\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1026878616}\n"
+   ],
+   "POST session/22a948eb-4101-45dd-92a5-7181b7b03240/element {\"using\":\"xpath\",\"value\":\"//*[text()='Paste']\"}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Wed, 13 May 2015 13:41:21 GMT\nServer: Jetty/5.1.x (Linux/3.13.0-52-generic amd64 java/1.7.0_79\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, 13 May 2015 13:41:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"22a948eb-4101-45dd-92a5-7181b7b03240\",\"status\":0,\"state\":\"success\",\"value\":{\"ELEMENT\":\"1\"},\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":2003185629}\n"
    ]
 }