3

I am having a problem, what i am trying to do is:

I open a webpage with WWW::Mechanize, fill the username and password and log in.

The issue I am having is, after logging in I have to select the value from a dropdown list and after that I have to press submit.

How can i do that?

The code which i have used is:

#!/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();

MechanizeFAQをご覧にならない場合。それはあなたがこのようなことをしなければならないと言っています:

# 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-methodを使用してページを送信できます。

$agent->click_button('name_of_the_submit_button');

ただし、クリックする必要のあるボタンがデフォルトのアクションである場合$agent->submit()は、同様にトリックを実行する必要があります。

于 2012-09-19T17:58:17.037 に答える