2

getこんにちは、さまざまなページへのループを使用しています。

コード:

while($stm->fetch()) {
    $mech->get(**#TheURL**);

            $mech->select( 'this', 'that' );
            $mech->tick( 'this' => undef );
            $mech->tick( 'this' => undef  );
            $mech->tick( 'this' => undef  );
            $mech->tick( 'this' => undef  );
            my $button = $mech->selector('input.button', single => 1);
            $mech->click($csvbutton);
} 

上記のコードは、ボタンをクリックした後にファイルをダウンロードします。ただし、最初の反復後に停止します。

Firefox の構成を変更して、ダウンロード マネージャーのポップアップを無効にしました。

このエラーを一度受け取りました:

MozRepl::RemoteObject::Object has no function addProgressListener at `$mech->get(**#TheURL**);`

任意の支援をいただければ幸いです。ありがとう。

アップデート:

WWW::Mechanize::Firefox が取得できない応答またはポストバックを待機しているため、最初のダウンロードでスタックすることがわかりました。ファイルがダウンロードされるだけです。

$mech->click($csvbutton);

ここが止まるところです。ページを手動で操作すると (つまり、戻るか、ホームページまたは新しい URL に移動する)、ループが続行されます。したがって、新しいページのロードを待っています。

WWW::Mechanize::Firefox に応答や新しいページの読み込みを待たないようにするにはどうすればよいですか?

ありがとう

4

2 に答える 2

1

synchronizeクリックのオプションを試しましたか:

$mech->click( $csvbutton, { synchronize => 0 } );
于 2013-04-15T09:55:05.593 に答える
1

行の形式は、次の形式で完全にする必要があります。

$mech->click({selector => ('input.button', single => 1), synchronize => 0});

selector =>またはを使用する必要がありますxpath =>

サイン:

$mech->click({xpath/selector => 'name' ,synchonize => 0})

その後、クリックは Web サーバーへの応答を待ちません。

で述べたように: cpan WWW::Mechanize::Firefox::トラブルシューティング

于 2013-04-16T11:45:26.517 に答える