如何使用Perl的WWW :: Mechanize访问没有名称或ID的表单?
问题描述:
我遇到了我的Perl程序问题。该程序登录到特定的网页并填写消息的文本区域和移动号码的输入框。点击“发送”按钮后,该消息将被发送到指定的号码。我已经准备好发送消息了。但问题是我无法让它接收消息/回复。我在Perl中使用WWW::Mechanize模块。这里是我的代码的一部分(接收消息):如何使用Perl的WWW :: Mechanize访问没有名称或ID的表单?
$username = 'suezy';
$password = '123';
$url = 'http://..sample.cgi';
# ...
$mech->credentials($username, $password);
$mech->get($url);
$mech->submit();
我的问题是,表格显示没有名字。此表单中有两个按钮,但我无法选择要点击的按钮,因为没有指定名称,ID包含空格(例如,表单名称='接收信息'..)。我需要点击第二个按钮'接收'。
的问题是,我怎么能够访问使用机械化模块不使用名称的形式和按钮?
答
您可以通过一个form_number参数的submit_form方法。
或拨打form_number方法来影响它的形式是使用以后调用点击或字段。
答
眼看只有两个窗体上的按钮,YSTH的建议应该很容易实现。
use strict;
use warnings;
use WWW::Mechanize;
my $username = "suezy";
my $password = "123";
my $url = 'http://.../sample.cgi';
my $mech = WWW::Mechanize->new();
$mech->get($url);
$mech->credentials($username,$password);
然后:
$mech->click_button({number => 1}); # if the 'Receive' button is 1
或者:
$mech->click_button({number => 2}); # if the 'Receive' button is 2
试验和错误的情况下是绰绰有余为你找出你点击了哪个按钮。
编辑
我假设相关表格已经选定。如果不是:
$mech->form_number($formNumber);
其中$formNumber
是相关页面上的表格编号。
答
$mech->form_with_fields('username');
将选择包含一个名为用户名字段的形式。 心连心
谢谢!但是如何访问按钮? – Suezy 2010-02-14 09:16:29
你最近怎么样?你的例子显示提交,所以我建议submit_form(form_number => xxx),而不是;如果您使用的是click或click_button,我建议事先调用form_number方法。 – ysth 2010-02-14 12:04:40