WWW :: Mechanize:如何根据表单中的数字

时间:2016-09-11 20:52:34

标签: html forms perl www-mechanize

在表单末尾的网站上有一个按钮,我似乎无法点击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)),我尝试将变量$ submit分配给find_all_inputs(3),然后分配click($submit);,无论如何,都不会点击此按钮。

有人可以指导我如何点击这个难以捉摸的按钮吗?

  

修改(在回答问题后)

询问HTML表单后发现我实际上输入了登录表单“忘记密码”字段的密码。为什么这个字段没有出现在$mech->find_all_inputs(),我不知道,因为“登录”是。无论哪种方式,单击按钮都会转到下一页。谢谢!

2 个答案:

答案 0 :(得分:3)

因为它是表单中的第一个按钮,所以你可以写这个

$mech->click_button( n => 1 )

或者,因为value属性为Login,您可以这样做

$mech->click_button( value => 'Login' )

但由于它是表单中的唯一按钮,只需

$mech->click

应该可以正常工作

答案 1 :(得分:1)

您是否先尝试选择合适的表单,然后致电click?它说(我的重点)

  

点击当前表单上的按钮效果。

在页面上找到您需要的表单。让我们说出它的2号形式。

# $ua is the User Agent (Mechanize object), at the appropriate page
$ua->form_number(2);
# fill the form ...
my $response = $ua->click();

$ua->submit_form( 
    form_number => 2, 
    # fields => { name => $value }  # can fill it here as well
};

我发现click整体可能更可靠。

要检查表单,您可以使用my @forms = $ua->forms。要填写表单,您可以使用selectset_fields。请参阅Form MethodsField Methods。所有这些操作都使用HTML::Form个对象,因此您也可以使用它的方法。例如,value_namespossible_values非常方便。

如果这没有帮助,请向我们提供更多详细信息 - 相关网页将是理想的。