perl – 如何使用和调试WWW :: Mechanize?
我是Perl的新手,我正在学习,同时我尝试自动化一些项目的工作.到目前为止它已经很有趣了.
我正在为客户生成报告.我可以从我可以访问的网页上获取此报告. 这是我到目前为止写的: my $mech = WWW::Mechanize->new(); my $url = 'http://X.X.X.X/Console/login/login.aspx'; $mech->get( $url ); $mech->submit_form( form_number => 1,fields =>{ 'ctl00$ctl00$cphVeriCentre$cphLogin$txtUser' => 'someone','ctl00$ctl00$cphVeriCentre$cphLogin$txtPW' => '12345','ctl00$ctl00$cphVeriCentre$cphLogin$ddlServers' => 'Live',button => 'Sign-In' },); die unless ($mech->success); $mech->dump_forms(); 我不明白为什么,但是,在此之后我看看什么转储输出,我看到第一个登录页面的代码,而我相信我应该在我成功登录后到达下一页. 可能有一些cookie可以影响我和登录尝试吗? 还有别的我做错了吗? 感谢你的帮助, 解决方法
这是事后几个月,但我根据我提出的类似问题解决了同样的问题.有关详细信息,请参阅
Is it possible to automate postback from the client side?.
我使用Python的Mechanize而不是Perl,但同样的原则适用. 总结我之前的回应: ASP.NET页面在表单中需要一个名为__EVENTTARGET的隐藏参数,当您正常使用mechanize时,该参数将不存在. 当普通用户访问时,这些页面上有一个__doPostBack(‘foo’)函数,通过每个链接上的javascript onclick事件为__EVENTTARGET提供相关值,但由于机械化不使用javascript,您需要自己设定这些值. python解决方案如下所示,但它不应该太难以适应perl. def add_event_target(form,target): #Creates a new __EVENTTARGET control and adds the value specified #.NET doesn't generate this in mechanize for some reason -- suspect maybe is #normally generated by javascript or some useragent thing? form.new_control('hidden','__EVENTTARGET',attrs = dict(name='__EVENTTARGET')) form.set_all_readonly(False) form["__EVENTTARGET"] = target (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |