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})

然后单击将不会等待网络服务器的响应。

如所述:cpan WWW::Mechanize::Firefox::Troubleshooting

于 2013-04-16T11:45:26.517 回答