Pārlūkot izejas kodu

Accept a firefox profile with custom profile_dir (#259)

Andy Jack 9 gadi atpakaļ
vecāks
revīzija
46266ba5cf
2 mainītis faili ar 20 papildinājumiem un 3 dzēšanām
  1. 9 3
      lib/Selenium/Firefox/Profile.pm
  2. 11 0
      t/Firefox-Profile.t

+ 9 - 3
lib/Selenium/Firefox/Profile.pm

@@ -53,14 +53,20 @@ new Selenium::Remote::Driver.
 
 sub new {
     my $class = shift;
+    my %args  = @_;
 
-    # TODO: add handling for a pre-existing profile folder passed into
-    # the constructor
+    my $profile_dir;
+    if ( $args{profile_dir} && -d $args{profile_dir} ) {
+        $profile_dir = $args{profile_dir};
+    }
+    else {
+        $profile_dir = File::Temp->newdir();
+    }
 
     # TODO: accept user prefs, boolean prefs, and extensions in
     # constructor
     my $self = {
-        profile_dir => File::Temp->newdir(),
+        profile_dir => $profile_dir,
         user_prefs => {},
         extensions => []
       };

+ 11 - 0
t/Firefox-Profile.t

@@ -191,4 +191,15 @@ CROAKING: {
     ok ($@ =~ /coercion.*failed/, "caught invalid extension in driver constructor");
 }
 
+PROFILE_DIR: {
+    my $tempdir = File::Temp->newdir;
+    my $dirname = $tempdir->dirname;
+
+    my $profile = Selenium::Firefox::Profile->new( profile_dir => $dirname );
+    ok( $profile->{profile_dir} eq $dirname, "profile_dir passed to constructor" );
+
+    $profile->_layout_on_disk;
+    ok( -f $dirname . '/user.js', "wrote to profile_dir" );
+}
+
 done_testing;