-1

私はこのオブジェクトを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

ここで、$elem の各配列要素を反復処理したいと考えています。これについてどうやって行くのですか?

4

2 に答える 2

1

$elemを逆参照してからループする必要があります。

for my $element (@{ $elem }) {
    # do stuff
}
于 2013-09-06T09:21:48.410 に答える
1

ドキュメントからわかる限り、には機能がSelenium::Remote::Driverありません。get_elements代わりに、 afind_elementsが存在します。リスト コンテキストではフラットな配列を返し、スカラー コンテキストでは配列参照を返します。つまり、次のいずれかを行うことができます

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

また

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

参照の使用方法に関する詳細については、perlreftutを参照してください。

于 2013-09-06T09:24:36.723 に答える