2013-09-06 4 views
-1

J'ai cet objet en Perlitérer par tableau d'objets perl

$ élém = $ Driver-> get_elements ("// sélectionnez [\ @ name [\" voitures \ "] // option");

<code><pre> 
    1 Selenium::Remote::WebElement=HASH(0x600f700) 
     'driver' => Selenium::Remote::Driver=HASH(0x5bb9618) 
     -> REUSED_ADDRESS 
     'id' => 95 
    2 Selenium::Remote::WebElement=HASH(0x6012d18) 
     'driver' => Selenium::Remote::Driver=HASH(0x5bb9618) 
     -> REUSED_ADDRESS 
     'id' => 96 
    3 Selenium::Remote::WebElement=HASH(0x5ff29f8) 
     'driver' => Selenium::Remote::Driver=HASH(0x5bb9618) 
     -> REUSED_ADDRESS 
     'id' => 97 
    4 Selenium::Remote::WebElement=HASH(0x5ca26b8) 
     'driver' => Selenium::Remote::Driver=HASH(0x5bb9618) 
     -> REUSED_ADDRESS 
     'id' => 98 
    5 Selenium::Remote::WebElement=HASH(0x600b330) 
     'driver' => Selenium::Remote::Driver=HASH(0x5bb9618) 
     -> REUSED_ADDRESS 
     'id' => 99 

Maintenant, je veux itérer à travers chaque élément de tableau dans elem $. Comment va-t-on à ce sujet.

Répondre

1

Vous aurez besoin de déréférencer $elem, puis boucle:

for my $element (@{ $elem }) { 
    # do stuff 
} 
1

Le Selenium::Remote::Driver n'a pas de fonction get_elements, pour autant que je peux voir de la documentation. Au lieu de cela, un find_elements existe. Il retournera un tableau plat dans un contexte de liste, ou une référence de tableau dans un contexte scalaire. Autrement dit, vous pouvez faire

my @elems = $driver->find_elements(...); 
for my $elem (@elems) { 
    ... 
} 

ou

my $elems = $driver->find_elements(...) 
for my $elem (@$elems) { 
    ... 
} 

Pour plus d'information sur la façon d'utiliser des références, lisez perlreftut.