无法在WWW / Mechanize.pm第2566行

时间:2016-05-04 04:06:04

标签: perl www-mechanize

我正在Facebook上使用WWW::Mechanize模块进行测试,当我尝试运行下面的代码时,它会返回错误

  

无法在C:/Strawberry/perl/vendor/lib/WWW/Mechanize.pm第2566行的未定义值上调用方法“header”。

#!/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', 'xxx@xxx.com');
$mech->field('pass', 'xxxxxxx');
$mech->click_button(value => 'Log In');

1 个答案:

答案 0 :(得分: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 => 'xxx@xxx.com', 
                        pass => 'xxxxxxx' 
                    }
                  );