2015-01-07 2 views
0

Я пишу скрипт Perl для входа на сайт и отображения следующей страницы после входа в систему. Вот код:Perl Script для входа на сайт и отображения следующей страницы

#!/usr/bin/perl 

use WWW::Mechanize; 
use HTTP::Cookies; 
my $m=WWW::Mechanize->new(); 

# Debug tricks 
$m->default_header('Accept-Encoding' => scalar HTTP::Message::decodable()); 
$m->add_handler("request_send", sub { shift->dump; return }); 
$m->add_handler("response_done", sub { shift->dump; return }); 

my $outfile="out.htm"; 
$m->cookie_jar(HTTP::Cookies->new()); 
$url = '<url>'; 
$m->get($url); 

$m->field(Email=>"abc"); 
$m->field(Passwd=>"def"); 

$m->click(); 

my $output_page= $m->content(); 
open(OUTFILE, ">$outfile"); 
print OUTFILE "$output_page"; 
close(OUTFILE); 

sub open_default_browser{ 

    $platform=$^O; 

    print "$platform"; 

    $url=shift; 

    $cmd="start $url"; 

    if(defined $cmd) { 
     system($cmd); 
    } 
    else { 
     die "Can't locate default browser"; 
    } 
} 

open_default_browser($outfile); 

Но когда я запускаю код все, что я получаю веб-страница с той же формой от URL.How может войти и отобразить следующую страницу. Мне нужно что-то изменить в коде?

+0

Вы используете debug, прочитали ли вы отладочный вывод? Показать –

+3

Этот код выглядит так, как будто он должен работать, предполагая, что 1) веб-сайт не требует JavaScript и 2) атрибуты 'name' полей в первой форме на странице:' Email' и 'Passwd' и 3) это только два поля, которые необходимо установить, и 4) вы используете правильный адрес электронной почты и пароль. К сожалению, не зная точного URL-адреса, с которым вы подключаетесь, мы, вероятно, не сможем помочь. Кроме того, этот скрипт не выполняет большую проверку ошибок; вы должны прочитать [docs] (https://metacpan.org/pod/WWW::Mechanize) для 'WWW :: Mechanize' и проверить, что, например, успешно выполняется запрос' GET'. – ThisSuitIsBlackNot

+0

@sputnick Я новичок в perl, и поэтому я его читаю где-то. Но при запуске кода ничего не появляется в командной строке. Есть ли способ отладить код? – user227668

ответ

0

Также: Сколько кнопок на странице? Если их больше одного, вам необходимо указать имя кнопки, которую нужно щелкнуть:

$m->click("button name"); 
+0

только одна кнопка, поэтому я думаю, что только $ m-> click() выполнит эту работу. – user227668