2016-05-04 75 views
2

上調用未定義值的方法「標題」我只是在Facebook上使用WWW::Mechanize模塊進行測試,當我嘗試運行下面的代碼時,它返回錯誤無法在WWW/Mechanize.pm行2566

位於C未定義的值無法調用 「頭」:/Strawberry/perl/vendor/lib/WWW/Mechanize.pm線2566

#!/usr/bin/perl -w 
use WWW::Mechanize; 
my $mech = WWW::Mechanize->new(); 
# Connect to server 
$mech->get("https://www.facebook.com"); 
$mech->success or die $mech->response->status_line; 

# Log into server 

$mech->field('email', '[email protected]'); 
$mech->field('pass', 'xxxxxxx'); 
$mech->click_button(value => 'Log In'); 
+0

這對我工作得很好。請檢查代碼中的哪個語句導致錯誤。 'perl -MLWP -E'表示$ LWP :: VERSION''和'perl -MWWW :: Mechanize -E'表示$ WWW :: Mechanize :: VERSION''的輸出是什麼?請注意,您應該*總是*'使用嚴格'和'使用警告'全部''在您編寫的每個* perl程序的頂部。沒有'use strict'的地方就沒有必要使用'my',並且在shebang行上不需要'-w' – Borodin

+0

$ LWP :: VERSION給我「無法定位對象方法」說「通過包」6.15「(也許你忘了加載」6.15「?」 和Mechanize :: VERSION是1.75 – Zachary

+0

你必須有一個非常舊的Perl版本? – Borodin

回答

3

你的頁面除英文以外的其他語言開放。這就是爲什麼你得到這個錯誤。如果你用英文強行打開頁面,那麼錯誤將會消失。試試下面的地址:

$mech->get("https://en-gb.facebook.com/"); 

或者,你可以直接獲得HTML::Form::SubmitInput情況下使用這個點擊:

$mech->current_form()->find_input(undef, 'submit'); 

,或者因爲有形式只需點擊按鈕,您可以使用click沒有參數。

$mech->click() 

或@Borodin您可以直接使用(如電子郵件和密碼字段都沒有翻譯)的建議:

$mech->submit_form(with_fields => { 
         email => '[email protected]', 
         pass => 'xxxxxxx' 
        } 
       ); 
+1

*」您的頁面正在打開我英語以外的其他語言「*你是如何診斷的? – Borodin

+0

我從印度打開該頁面。它在「Marathi」(印度當地語言)開放,我得到了和OP一樣的錯誤。 –

+0

那麼如何導致*「無法調用方法」標題「未定義的值」*? – Borodin