NAME

WWW::Mechanize::FormFiller - framework to automate HTML forms

SYNOPSIS

# Create a form filler that fills out google for my homepage

my $html = "<html><body><form name='f' action='http://www.google.com/search'>
    <input type='text' name='q'>
    <input type='submit' name=btnG value='Google Search'>
    <input type='hidden' name='secretValue' value='0xDEADBEEF' />
  </form></body></html>";

my $f = WWW::Mechanize::FormFiller->new( q => [Fixed => "Corion Homepage"] );
my $form = HTML::Form->parse($html,"http://www.google.com/intl/en/");
$f->fill_form($form);

my $request = $form->click("btnG");
# Now we have a complete HTTP request, which we can hand off to
# LWP::UserAgent or (preferrably) WWW::Mechanize

print $request->as_string;

You are not limited to fixed form values - callbacks and interactive editing are also already provided :

# Create a form filler that asks us for the password

# Normally, the HTML would come from a LWP::UserAgent request
my $html = "<html><body><form name='f' action='/login.asp'>
  <input type='text' name='login'>
  <input type='password' name='password' >
  <input type='submit' name=Login value='Log in'>
  <input type='hidden' name='session' value='0xDEADBEEF' />
</form></body></html>";

my $f = WWW::Mechanize::FormFiller->new();
my $form = HTML::Form->parse($html,"http://www.fbi.gov/super/secret/");

$f->add_filler( password => Interactive => []);
$f->fill_form($form);

my $request = $form->click("Login");

# Now we have a complete HTTP request, which we can hand off to
# LWP::UserAgent or (preferrably) WWW::Mechanize
print $request->as_string;

DESCRIPTION

The module is intended as a simple way to fill out HTML forms from a set of predetermined values. You set up the form filler with value elements, retrieve the HTML form, and let the form filler loose on that form.

There are value classes provided for many tasks - fixed values, values to be queried interactively from the user, values taken randomly from a list of values and values specified through a callback to some Perl code.

new %ARGS

Creates a new instance. The %ARGS hash has two possible keys : default, whose value should be an array reference consisting of the name of a WWW::Mechanize::FormFiller::Value subclass and the optional constructor values. values must be an array reference, which contains array and Files, which takes an array reference to the filenames to watch.

Example :

add_filler NAME, CLASS, @ARGS

Adds a new value to the list of filled fields. NAME is the name of the form field, CLASS is the name of the class in the WWW::Mechanize::FormFiller::Value namespace - it must live below there ! @ARGS is an optional array reference to the parameters that the subclass constructor takes.

add_value NAME, VALUE

Adds a new WWW::Mechanize::FormFiller::Value subclass to the list of filled fields. NAME is the name of the form field, VALUE is an object that responds to the interface of WWW::Mechanize::FormFiller::Value.

fill_form FORM

Sets the field values in FORM to the values returned by the WWW::Mechanize::FormFiller::Value elements. FORM should be of type HTML::Forms or respond to the same interface.

Value subclasses

TODO

EXPORT

None by default.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

Copyright (C) 2002,2003 Max Maischein

AUTHOR

Max Maischein, <corion@cpan.org>

Please contact me if you find bugs or otherwise improve the module. More tests are also very welcome !

SEE ALSO

WWW::Mechanize,WWW::Mechanize::Shell