Просмотр исходного кода

Added "extra_capabilities" named argument to "new" and pass these to "new_session"

This change enalbes things like:

    my $driver = new Selenium::Remote::Driver('browser_name'       => 'chrome',
                                              'platform'           => 'VISTA',
                                              'extra_capabilities' => {'chrome.switches' => ["--user-data-dir=$ENV{LOCALAPPDATA}\\Google\\Chrome\\User Data"],},
                                              );
Phil Kania 14 лет назад
Родитель
Сommit
11548d7e4c
1 измененных файлов с 14 добавлено и 7 удалено
  1. 14 7
      lib/Selenium/Remote/Driver.pm

+ 14 - 7
lib/Selenium/Remote/Driver.pm

@@ -148,7 +148,8 @@ created when you use the find_* methods.
         'javascript' - <boolean> - whether javascript should be supported
         'auto_close' - <boolean> - whether driver should end session on remote
                                    server on close.
-        
+        'extra_capabilities' - HASH of extra capabilities
+
         If no values are provided, then these defaults will be assumed:
             'remote_server_addr' => 'localhost'
             'port'         => '4444'
@@ -165,13 +166,17 @@ created when you use the find_* methods.
     my $driver = new Selenium::Remote::Driver;
     or
     my $driver = new Selenium::Remote::Driver('browser_name' => 'firefox',
-                                              'platform' => 'MAC')
+                                              'platform' => 'MAC');
     or
     my $driver = new Selenium::Remote::Driver('remote_server_addr' => '10.10.1.1',
                                               'port' => '2222',
                                               auto_close => 0
-                                              )
-
+                                              );
+    or
+    my $driver = new Selenium::Remote::Driver('browser_name'       => 'chrome',
+                                              'platform'           => 'VISTA',
+                                              'extra_capabilities' => {'chrome.switches' => ["--user-data-dir=$ENV{LOCALAPPDATA}\\Google\\Chrome\\User Data"],},
+                                              );
 =cut
 
 sub new {
@@ -208,7 +213,7 @@ sub new {
     $self->{remote_conn} =
       new Selenium::Remote::RemoteConnection( $self->{remote_server_addr},
         $self->{port} );
-    $self->new_session();
+    $self->new_session(delete $args{extra_capabilities});
 
     if ( !( defined $self->{session_id} ) ) {
         croak "Could not establish a session with the remote server\n";
@@ -242,14 +247,16 @@ sub _execute_command {
 # A method that is used by the Driver itself. It'll be called to set the
 # desired capabilities on the server.
 sub new_session {
-    my $self = shift;
+    my ($self, $extra_capabilities) = @_;
+    $extra_capabilities ||= {};
     my $args = {
         'desiredCapabilities' => {
             'browserName'       => $self->{browser_name},
             'platform'          => $self->{platform},
             'javascriptEnabled' => $self->{javascript},
             'version'           => $self->{version},
-        }
+            %$extra_capabilities,
+        },
     };
     my $resp =
       $self->{remote_conn}