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.

Was it helpful?

Solution

You'll need to dereference $elem, then loop:

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

OTHER TIPS

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top