Переглянути джерело

Fixed #119 : added a wantarray in the return and fixed tests accordingly

Emmanuel Peroumalnaik 11 роки тому
батько
коміт
1e86bab925
2 змінених файлів з 9 додано та 4 видалено
  1. 4 4
      lib/Selenium/Remote/Driver.pm
  2. 5 0
      t/01-driver.t

+ 4 - 4
lib/Selenium/Remote/Driver.pm

@@ -1617,7 +1617,7 @@ sub find_element {
                  Defaults to 'xpath' if not configured global during instantiation.
 
  Output:
-    ARRAY of WebElement Objects
+    ARRAY or ARRAYREF of WebElement Objects
 
  Usage:
     $driver->find_elements("//input");
@@ -1652,16 +1652,16 @@ sub find_elements {
                 die $@;
             }
         }
-        my @elem_obj_arr = ();
+        my $elem_obj_arr = [];
         foreach (@$ret_data) {
             push(
-                @elem_obj_arr,
+                @$elem_obj_arr,
                 $self->webelement_class->new(
                     id => $_->{ELEMENT}, driver => $self
                 )
             );
         }
-        return @elem_obj_arr;
+        return wantarray? @{$elem_obj_arr} : $elem_obj_arr ;
     }
     else {
         croak "Bad method, expected - class, class_name, css, id, link,

+ 5 - 0
t/01-driver.t

@@ -148,6 +148,11 @@ FIND: {
     eval { $driver->find_element("element_that_doesnt_exist","id"); };
     chomp $@;
     is($@,$expected_err.".","find_element croaks properly");
+    my $elems = $driver->find_elements("//input[\@id='checky']");
+    is(scalar(@$elems),1, 'Got an arrayref of WebElements');
+    my @array_elems = $driver->find_elements("//input[\@id='checky']");
+    is(scalar(@array_elems),1, 'Got an array of WebElements');
+    is($elems->[0]->get_value(),$array_elems[0]->get_value(), 'and the elements returned are the same');
 }
 
 EXECUTE: {