3

我有一个问题,我想做的是:

我用 WWW::Mechanize 打开一个网页,填写用户名和密码并登录。

我遇到的问题是,登录后我必须从下拉列表中选择值,然后我必须按提交。

我怎样才能做到这一点?

我使用的代码是:

#!/usr/bin/perl
use LWP::UserAgent;
use  WWW::Mechanize;
use HTTP::Cookies;
use strict;

my $username="123456";
my $password="XXXXX";
my $project="Systems";
my $agent = WWW::Mechanize->new();
$agent->get('http://www.XXXXX.com');
$agent->form_name("login_form");
$agent->field("txtLoginId", $username);
$agent->field("txtPassword", $password);
$agent->submit();
#Till now it has success full logined, From here it has to select one value from a drop #down box
$agent->form_name("frmProject");
$agent->field("cboProject", $project);
my $response=$agent->submit();

if ($response->is_success){
  print "\nContent:\n";
  print $response->as_string;
}elsif ($response->is_error){
  print $response->error_as_HTML;
}
4

2 回答 2

2

WWW::Mechanize 有一个click可以用来点击按钮的方法。或者,研究submit_form可以为所有表单元素指定值的方法。如果页面使用 javascript,WWW:Mechanize 可能不适合您的任务(参见例如WWW::Mechanize::Firefox的替代方法)。

于 2012-09-19T17:57:59.107 回答
1

你需要使用select方法。如果您知道值(不是显示文本),请使用:

$agent->form_name("frmProject");
$agent->select('cboProject', $project);
my $response = $agent->submit();

如果你不看一下Mechanize FAQ。它说你必须做这样的事情:

# Find the correct input element
my ($projectlist) = $agent->find_all_inputs( name => 'cboProject' );
# Look up the value of the option

my %name_lookup;
@name_lookup{ $projectlist->value_names } = $projectlist->possible_values;

# use the display-text to get the correct value
my $value = $name_lookup{ $project };

完成后,您可以使用click- 方法提交页面。

$agent->click_button('name_of_the_submit_button');

但是,如果您必须单击的按钮是默认操作,$agent->submit()那么也应该这样做。

于 2012-09-19T17:58:17.037 回答