2016-01-07 89 views
1

如果我試圖使用WWW::Mechanize::Firefox發出->get(URL)請求,我該如何正確使用超時?WWW :: Mechanize :: Firefox超時

my $mech = WWW::Mechanize::Firefox->new(timeout => 10);似乎並沒有工作

+3

[你不是第一個想知道這個的。](http://stackoverflow.com/q/22311475/176646)不幸的是,它似乎不支持W :: M :: F ,所以你可能必須使用['alarm'](http://perldoc.perl.org/functions/alarm.html)來實現超時。 – ThisSuitIsBlackNot

回答

1

它可以模擬這個,至少有一個良好的程度。

您可以關閉get的同步,在這種情況下,應立即返回呼叫。然後輪詢每個$sleep_time,直到超時,並測試頁面是否完成。睡眠允許所有其他良好的頁面完成,因此根據需要設置$sleep_time

my $timeout = 10; 
my $sleep_time = 1; 

my $page = get($url, synchronize => 0); 

for (1..$timeout) { 
    # Test some page property that will confirm that it loaded 
    last if $page->title eq $expected_title; 
    sleep $sleep_time; 
} 

存在如何確切確認每個頁面的問題,但這應提供工作超時。

+1

我看到這是一個較舊的帖子,但對於簡單超時的想法可能會有用。 – zdim

相關問題