Explorar el Código

Create convenience packages for shortcut browser instantiation

Daniel Gempesaw hace 11 años
padre
commit
68ac263703

+ 11 - 0
lib/Selenium/Chrome.pm

@@ -0,0 +1,11 @@
+package Selenium::Chrome;
+
+use Moo;
+extends 'Selenium::Remote::Driver';
+
+has '+browser_name' => (
+    is => 'ro',
+    default => sub { 'chrome' }
+);
+
+1;

+ 11 - 0
lib/Selenium/Firefox.pm

@@ -0,0 +1,11 @@
+package Selenium::Firefox;
+
+use Moo;
+extends 'Selenium::Remote::Driver';
+
+has '+browser_name' => (
+    is => 'ro',
+    default => sub { 'firefox' }
+);
+
+1;

+ 16 - 0
lib/Selenium/InternetExplorer.pm

@@ -0,0 +1,16 @@
+package Selenium::InternetExplorer;
+
+use Moo;
+extends 'Selenium::Remote::Driver';
+
+has '+browser_name' => (
+    is => 'ro',
+    default => sub { 'internet_explorer' }
+);
+
+has '+platform' => (
+    is => 'ro',
+    default => sub { 'WINDOWS' }
+);
+
+1;

+ 38 - 0
t/convenience.t

@@ -0,0 +1,38 @@
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+use Selenium::InternetExplorer;
+use Selenium::Chrome;
+use Selenium::Firefox;
+use Test::More;
+
+use FindBin;
+use lib $FindBin::Bin . '/lib';
+use TestHarness;
+
+my $harness = TestHarness->new(
+    this_file => $FindBin::Script,
+    record => 1
+);
+
+my %caps = %{ $harness->base_caps };
+delete $caps{browser_name};
+
+my $firefox = Selenium::Firefox->new( %caps );
+ok( $firefox->browser_name eq 'firefox', 'convenience firefox is okay' );
+$firefox->quit;
+
+my $chrome = Selenium::Chrome->new( %caps );
+ok( $chrome->browser_name eq 'chrome', 'convenience chrome is okay' );
+$chrome->quit;
+
+SKIP: {
+    skip 'Can only test IE on windows', 1 unless $^O eq 'MSWin32';
+
+    my $ie = Selenium::InternetExplorer->new( %caps );
+    ok( $ie->browser_name eq 'internet_explorer', 'convenience ie is okay' );
+    $ie->quit;
+}
+
+done_testing;

+ 14 - 0
t/mock-recordings/convenience-mock-darwin.json

@@ -0,0 +1,14 @@
+{
+   "DELETE session/ffa689f5-d71b-42fc-9d54-46ba96f46c07 {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 26 Jan 2015 00:39:22 GMT\nServer: Jetty/5.1.x (Mac OS X/10.10.1 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: Mon, 26 Jan 2015 00:39:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"ffa689f5-d71b-42fc-9d54-46ba96f46c07\",\"status\":0,\"state\":\"success\",\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":307272646}\n"
+   ],
+   "POST session {\"desiredCapabilities\":{\"acceptSslCerts\":true,\"browserName\":\"chrome\",\"javascriptEnabled\":true,\"platform\":\"ANY\",\"version\":\"\"}}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 26 Jan 2015 00:39:22 GMT\nServer: Jetty/5.1.x (Mac OS X/10.10.1 x86_64 java/1.7.0_67\nContent-Length: 744\nContent-Type: application/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, 26 Jan 2015 00:39:23 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"0bb63c2d-038d-4b2a-84dd-ed913c0f9e7c\",\"status\":0,\"state\":null,\"value\":{\"platform\":\"MAC\",\"acceptSslCerts\":true,\"javascriptEnabled\":true,\"browserName\":\"chrome\",\"chrome\":{\"userDataDir\":\"/var/folders/19/fy4zlkw13c160qyl6h5px_dh55vrly/T/.org.chromium.Chromium.7X4hmM\"},\"rotatable\":false,\"locationContextEnabled\":true,\"mobileEmulationEnabled\":false,\"webdriver.remote.sessionid\":\"0bb63c2d-038d-4b2a-84dd-ed913c0f9e7c\",\"version\":\"40.0.2214.91\",\"takesHeapSnapshot\":true,\"cssSelectorsEnabled\":true,\"databaseEnabled\":false,\"handlesAlerts\":true,\"browserConnectionEnabled\":false,\"nativeEvents\":true,\"webStorageEnabled\":true,\"applicationCacheEnabled\":false,\"takesScreenshot\":true},\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":85267270}\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, 26 Jan 2015 00:39:19 GMT\nServer: Jetty/5.1.x (Mac OS X/10.10.1 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: Mon, 26 Jan 2015 00:39:22 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"ffa689f5-d71b-42fc-9d54-46ba96f46c07\",\"status\":0,\"state\":null,\"value\":{\"platform\":\"MAC\",\"javascriptEnabled\":true,\"acceptSslCerts\":true,\"browserName\":\"firefox\",\"rotatable\":false,\"locationContextEnabled\":true,\"webdriver.remote.sessionid\":\"ffa689f5-d71b-42fc-9d54-46ba96f46c07\",\"version\":\"34.0.5\",\"databaseEnabled\":true,\"cssSelectorsEnabled\":true,\"handlesAlerts\":true,\"webStorageEnabled\":true,\"nativeEvents\":false,\"applicationCacheEnabled\":true,\"takesScreenshot\":true},\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":1080275328}\n"
+   ],
+   "DELETE session/0bb63c2d-038d-4b2a-84dd-ed913c0f9e7c {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Mon, 26 Jan 2015 00:39:23 GMT\nServer: Jetty/5.1.x (Mac OS X/10.10.1 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: Mon, 26 Jan 2015 00:39:23 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"0bb63c2d-038d-4b2a-84dd-ed913c0f9e7c\",\"status\":0,\"state\":\"success\",\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":2132036725}\n"
+   ]
+}