【发布时间】:2017-01-19 07:32:11
【问题描述】:
在表单末尾的网站上有一个按钮,我似乎无法使用 WWW::Mechanize 单击该按钮。这是与此按钮有关的 HTML 代码:
<input type="submit" class="saveButton" value="Login">
当我print $mech->find_all_inputs(); 时,我会返回这个:
HTML::Form::TextInput=HASH(0x7f8f52cdc450)
HTML::Form::TextInput=HASH(0x7f8f5302b488)
HTML::Form::SubmitInput=HASH(0x7f8f52cdc108)
第三个是我要点击的。即使我找到了它,我也不完全确定如何单击此按钮。我试过click(field(n => 3)),我试着给find_all_inputs(3)赋值一个变量$submit,然后click($submit);,不管怎样,这个按钮没有被点击。
谁能指导我如何点击这个难以捉摸的按钮?
编辑(回答问题后)
查询 HTML 表单发现我实际上是在表单的“忘记密码”字段中输入登录密码。为什么$mech->find_all_inputs() 没有出现这个字段,我不知道,因为“登录”是。无论哪种方式,单击按钮都会将我带到下一页。谢谢!
【问题讨论】:
-
似乎
click有效,但是,我没有转到下一页(有问题的按钮是登录按钮,所以点击它应该会转到另一个网址,对吧?但是'$ ua -> uri;' 在点击按钮之前和之后是一样的)。我尝试了my $response = $ua -> click();和print $response,它们返回了HTML::Form::SubmitInput=HASH(0x7f8f52cdc108),这就是我认为click有效的原因。 -
你的 Mechanize 对象有 cookie 吗?考虑使用
my $mech = WWW::Mechanize->new( cookie_jar => HTTP::Cookies->new( file => "$ENV{HOME}/.cookies.txt" ) );获取cookie。如果没有,您似乎不太可能登录。 -
@bytepusher:默认情况下,
WWW::Mechanize构造函数的行为就像您传递了选项cookie_jar => {},它创建了一个内存中的HTTP::Cookies对象。 -
将@bytepusher 推荐的内容粘贴到我的代码中返回:
Can't locate object method "new" via package "HTTP::Cookies" at test.pl line 10。我不确定为什么。模块 HTTP::Cookies 在我的系统上是最新的。 -
对不起,我隐约记得必须通过一个。我想我错了。道歉!
标签: html forms perl www-mechanize