WWW::Mechanize: 如何根据表单中的编号单击按钮
WWW::Mechanize: How To Click Button Based On Its Number in Form
网站上有一个表单末尾的按钮,我似乎无法使用 WWW::Mechanize 单击该按钮。这是与此按钮有关的 HTML 的位:
<input type="submit" class="saveButton" value="Login">
当我 print $mech->find_all_inputs();
时,我得到 return 这个:
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);
,无论如何,这个按钮都没有被点击。
谁能指导我如何点击这个难以捉摸的按钮?
Edit (after question answered)
查询 HTML 表单发现我实际上是在表单的 'Forgot my Password' 字段中输入登录密码。为什么这个字段没有出现在 $mech->find_all_inputs()
上,我不知道 "Login" 出现了。无论哪种方式,单击按钮都会将我带到下一页。谢谢!
您是否尝试先 select 适当的表格,然后调用 click
?它说(我的重点)
Has the effect of clicking a button on the current form.
在页面上找到您需要的表格。假设它是 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
。例如,要填写表格,您可以使用 select
或 set_fields
。请参阅 Form Methods
and Field Methods
. All this operates with HTML::Form
个对象,以便您也可以使用它的方法。例如,value_names
和 possible_values
很方便。
如果这没有帮助,请给我们更多详细信息 -- 有问题的网页将是理想的。
由于是表单中的第一个按钮,可以这么写
$mech->click_button( n => 1 )
或者,因为它的 value
属性是 Login
,你可以这样做
$mech->click_button( value => 'Login' )
但由于它是表单中唯一的按钮,所以
$mech->click
应该可以正常工作
网站上有一个表单末尾的按钮,我似乎无法使用 WWW::Mechanize 单击该按钮。这是与此按钮有关的 HTML 的位:
<input type="submit" class="saveButton" value="Login">
当我 print $mech->find_all_inputs();
时,我得到 return 这个:
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);
,无论如何,这个按钮都没有被点击。
谁能指导我如何点击这个难以捉摸的按钮?
Edit (after question answered)
查询 HTML 表单发现我实际上是在表单的 'Forgot my Password' 字段中输入登录密码。为什么这个字段没有出现在 $mech->find_all_inputs()
上,我不知道 "Login" 出现了。无论哪种方式,单击按钮都会将我带到下一页。谢谢!
您是否尝试先 select 适当的表格,然后调用 click
?它说(我的重点)
Has the effect of clicking a button on the current form.
在页面上找到您需要的表格。假设它是 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
。例如,要填写表格,您可以使用 select
或 set_fields
。请参阅 Form Methods
and Field Methods
. All this operates with HTML::Form
个对象,以便您也可以使用它的方法。例如,value_names
和 possible_values
很方便。
如果这没有帮助,请给我们更多详细信息 -- 有问题的网页将是理想的。
由于是表单中的第一个按钮,可以这么写
$mech->click_button( n => 1 )
或者,因为它的 value
属性是 Login
,你可以这样做
$mech->click_button( value => 'Login' )
但由于它是表单中唯一的按钮,所以
$mech->click
应该可以正常工作