Selaa lähdekoodia

Merge pull request #183 from gempesaw/convenience-packages

Create convenience packages for shortcut browser instantiation
Daniel Gempesaw 11 vuotta sitten
vanhempi
sitoutus
04eb985e1d

+ 18 - 0
lib/Selenium/Chrome.pm

@@ -0,0 +1,18 @@
+package Selenium::Chrome;
+
+# ABSTRACT: A convenience package for creating a Chrome instance
+use Moo;
+extends 'Selenium::Remote::Driver';
+
+=head1 SYNOPSIS
+
+    my $driver = Selenium::Chrome->new;
+
+=cut
+
+has '+browser_name' => (
+    is => 'ro',
+    default => sub { 'chrome' }
+);
+
+1;

+ 18 - 0
lib/Selenium/Firefox.pm

@@ -0,0 +1,18 @@
+package Selenium::Firefox;
+
+# ABSTRACT: A convenience package for creating a Firefox instance
+use Moo;
+extends 'Selenium::Remote::Driver';
+
+=head1 SYNOPSIS
+
+    my $driver = Selenium::Firefox->new;
+
+=cut
+
+has '+browser_name' => (
+    is => 'ro',
+    default => sub { 'firefox' }
+);
+
+1;

+ 23 - 0
lib/Selenium/InternetExplorer.pm

@@ -0,0 +1,23 @@
+package Selenium::InternetExplorer;
+
+# ABSTRACT: A convenience package for creating a IE instance
+use Moo;
+extends 'Selenium::Remote::Driver';
+
+=head1 SYNOPSIS
+
+    my $driver = Selenium::InternetExplorer->new;
+
+=cut
+
+has '+browser_name' => (
+    is => 'ro',
+    default => sub { 'internet_explorer' }
+);
+
+has '+platform' => (
+    is => 'ro',
+    default => sub { 'WINDOWS' }
+);
+
+1;

+ 18 - 0
lib/Selenium/PhantomJS.pm

@@ -0,0 +1,18 @@
+package Selenium::PhantomJS;
+
+# ABSTRACT: A convenience package for creating a PhantomJS instance
+use Moo;
+extends 'Selenium::Remote::Driver';
+
+=head1 SYNOPSIS
+
+    my $driver = Selenium::PhantomJS->new;
+
+=cut
+
+has '+browser_name' => (
+    is => 'ro',
+    default => sub { 'phantomjs' }
+);
+
+1;

+ 38 - 0
t/convenience.t

@@ -0,0 +1,38 @@
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+use Selenium::Chrome;
+use Selenium::Firefox;
+use Selenium::InternetExplorer;
+use Selenium::PhantomJS;
+use Test::More;
+
+use FindBin;
+use lib $FindBin::Bin . '/lib';
+use TestHarness;
+
+my $harness = TestHarness->new(
+    this_file => $FindBin::Script
+);
+
+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"
+   ]
+}

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

@@ -0,0 +1,14 @@
+{
+   "DELETE session/101f1644-09ec-4501-8858-5451574cd8e3 {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Sun, 01 Feb 2015 04:25:59 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: Sun, 01 Feb 2015 04:25:59 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"101f1644-09ec-4501-8858-5451574cd8e3\",\"status\":0,\"state\":\"success\",\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":2313854}\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: Sun, 01 Feb 2015 04:25:59 GMT\nServer: Jetty/5.1.x (Linux/3.2.0-23-generic-pae i386 java/1.7.0_51\nContent-Length: 698\nContent-Type: application/json; charset=utf-8\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\nClient-Date: Sun, 01 Feb 2015 04:26:00 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"be2c5bf8-64ab-4470-8971-6317a9822c60\",\"status\":0,\"state\":null,\"value\":{\"platform\":\"LINUX\",\"acceptSslCerts\":true,\"javascriptEnabled\":true,\"browserName\":\"chrome\",\"chrome\":{\"userDataDir\":\"/tmp/.com.google.Chrome.pJgqtA\"},\"rotatable\":false,\"locationContextEnabled\":true,\"mobileEmulationEnabled\":false,\"webdriver.remote.sessionid\":\"be2c5bf8-64ab-4470-8971-6317a9822c60\",\"version\":\"40.0.2214.94\",\"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\":21990978}\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: Sun, 01 Feb 2015 04:25:57 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: Sun, 01 Feb 2015 04:25:59 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"101f1644-09ec-4501-8858-5451574cd8e3\",\"status\":0,\"state\":null,\"value\":{\"platform\":\"LINUX\",\"javascriptEnabled\":true,\"acceptSslCerts\":true,\"browserName\":\"firefox\",\"rotatable\":false,\"locationContextEnabled\":true,\"webdriver.remote.sessionid\":\"101f1644-09ec-4501-8858-5451574cd8e3\",\"version\":\"27.0.1\",\"databaseEnabled\":true,\"cssSelectorsEnabled\":true,\"handlesAlerts\":true,\"browserConnectionEnabled\":true,\"webStorageEnabled\":true,\"nativeEvents\":false,\"applicationCacheEnabled\":true,\"takesScreenshot\":true},\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":22283134}\n"
+   ],
+   "DELETE session/be2c5bf8-64ab-4470-8971-6317a9822c60 {}" : [
+      "HTTP/1.1 200 OK\nCache-Control: no-cache\nCache-Control: no-cache\nConnection: close\nDate: Sun, 01 Feb 2015 04:26:00 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: Sun, 01 Feb 2015 04:26:01 GMT\nClient-Peer: 127.0.0.1:4444\nClient-Response-Num: 1\n\n{\"sessionId\":\"be2c5bf8-64ab-4470-8971-6317a9822c60\",\"status\":0,\"state\":\"success\",\"value\":null,\"class\":\"org.openqa.selenium.remote.Response\",\"hCode\":16791543}\n"
+   ]
+}