Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > нажатие кнопки


Автор: chaos 7.6.2005, 10:53
Здрасте!!!!
Вот возникла проблема: необходимо написать скриптик каторый будет нажимать кнопки на сайте и всала проблема как их нажимать
Вот подумал может кто сталкивался с этим и что нить может подсказать, а то чето не охото изобретаь велик


Заранее благодарен!!!

Автор: korob2001 7.6.2005, 11:01
chaos - поясни подробнее, не понятно, что за кнопки и что значит нажимать?

Автор: chaos 7.6.2005, 11:11
Цитата(korob2001 @ 7.6.2005, 11:01)
chaos - поясни подробнее, не понятно, что за кнопки и что значит нажимать?

ну вот на сайте есть форм(action="POST") и кнопочка(submit) мне необходимо скриптом "нажать" ее)) и получить результат
вот вроде так

Автор: korob2001 7.6.2005, 12:00
А зачем тогда вообще делать кнопку SUBMIT, если тебе нужно отправлять форму программно? Думаю ответ кроется не в Perl, а в JavaScript. Просто напиши функию которая будет по определённому событию отправлять твою форму.
А может я опять чего не допонял???

ЗЫ:
Цитата

форм(action="POST")

думаю ты хотел написать method="POST"

Автор: chaos 8.6.2005, 07:54
привет, korob2001!
все я уже разобрался, покапавшись на cpan'е нашел то что мне нужно:
Код

#!/usr/bin/perl -w
use strict;

use URI::URL;
use HTTP::Request;
use HTTP::Response;
use HTTP::Request::Common;
use HTTP::Request::Form;
use HTML::TreeBuilder;
use LWP::UserAgent;

#DECLARE VARIABLE
my($ua, $url, $request, $response, $tree, @forms, $f);

$ua = LWP::UserAgent->new; 
$url = 'http://localhost/'; 

$request = HTTP::Request->new(GET => $url); 

$response = $ua->request($request); 
if (!$response->is_success) { 
    print STDERR $response->status_line, "\n";
    exit(0);
}

#print $response->content; 

$tree = HTML::TreeBuilder->new; 
$tree->parse($response->content); 
$tree->eof(); 

@forms = $tree->find_by_tag_name('FORM'); 
die "What, no forms in $url?" unless @forms; 

$f = HTTP::Request::Form->new($forms[0], $url);
$f->field("field1","blablabla");
$f->field("field2","blablabla");
$f->field("hide","test hide");

$tree->delete(); 
$response = $ua->request($f->press('button'));#'button')); 

if (!$response->is_success) 
{
    print STDERR $response->status_line, "\n";
    exit(0);
}
print $response->content; 
print "\n", $response->base, "\n";


вот это я хотел))

PS Только вот может плохо объяснял)

Автор: Anarki 8.6.2005, 21:30
Можно использовать модуль WWW::Mechanize

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)