You'll need to dereference $elem
, then loop:
for my $element (@{ $elem }) {
# do stuff
}
Question
I have this object in perl
$elem = $driver->get_elements("//select[\@name[\"cars\"]//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
Now I want to iterate through each Array Element in $elem. How does one go about this.
La solution
You'll need to dereference $elem
, then loop:
for my $element (@{ $elem }) {
# do stuff
}
Autres conseils
The Selenium::Remote::Driver
has no get_elements
function, as far as I can see from the documentation. Instead, a find_elements
exists. It will return a flat array in list context, or an array reference in scalar context. That is, you can either do
my @elems = $driver->find_elements(...);
for my $elem (@elems) {
...
}
or
my $elems = $driver->find_elements(...)
for my $elem (@$elems) {
...
}
For further info on how to use references, read perlreftut.