소스 검색

Use tiny role to set wd_context_prefix for fun

Daniel Gempesaw 10 년 전
부모
커밋
cba8af2aae
4개의 변경된 파일29개의 추가작업 그리고 9개의 파일을 삭제
  1. 1 5
      lib/Selenium/Remote/Driver.pm
  2. 11 0
      lib/Selenium/Remote/Driver/CanSetWebdriverContext.pm
  3. 1 4
      lib/Selenium/Remote/RemoteConnection.pm
  4. 16 0
      t/CanSetWebdriverContext.t

+ 1 - 5
lib/Selenium/Remote/Driver.pm

@@ -392,11 +392,6 @@ has 'remote_conn' => (
     },
 );
 
-has 'wd_context_prefix' => (
-    is => 'lazy',
-    default => sub { '/wd/hub' }
-);
-
 has 'error_handler' => (
     is => 'rw',
     coerce => sub {
@@ -518,6 +513,7 @@ has 'inner_window_size' => (
 );
 
 with 'Selenium::Remote::Finders';
+with 'Selenium::Remote::Driver::CanSetWebdriverContext';
 
 sub BUILD {
     my $self = shift;

+ 11 - 0
lib/Selenium/Remote/Driver/CanSetWebdriverContext.pm

@@ -0,0 +1,11 @@
+package Selenium::Remote::Driver::CanSetWebdriverContext;
+
+# ABSTRACT: Customize the webdriver context prefix for various drivers
+use Moo::Role;
+
+has 'wd_context_prefix' => (
+    is => 'lazy',
+    default => sub { '/wd/hub' }
+);
+
+1;

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

@@ -36,10 +36,7 @@ has 'error_handler' => (
     builder => sub { return Selenium::Remote::ErrorHandler->new; }
 );
 
-has 'wd_context_prefix' => (
-    is => 'lazy',
-    default => sub { '/wd/hub' }
-);
+with 'Selenium::Remote::Driver::CanSetWebdriverContext';
 
 sub check_status {
     my $self = shift;

+ 16 - 0
t/CanSetWebdriverContext.t

@@ -0,0 +1,16 @@
+use strict;
+use warnings;
+use Test::More;
+
+{
+    package SetWebdriverContext;
+    use Moo;
+    with 'Selenium::Remote::Driver::CanSetWebdriverContext';
+
+}
+
+my $prefix = SetWebdriverContext->new;
+ok($prefix->can('wd_context_prefix'), 'role grants wd context prefix attr');
+is($prefix->wd_context_prefix, '/wd/hub', 'role has proper default webdriver context');
+
+done_testing;