The following code can be used to script Internet Explorer actions. The exemple chosen is here is to fill in a form and then validate it through a perl script.
For this test script, let's imagine we have a HTML form named 'log_form' (<form ... name='log_form'>), a login input named 'login' ((<input type='text' name='login'>), a password input named 'pass' and a submit button named 'go'.
To find more information about how to drive IE, have a look here :
http://msdn.microsoft.com/workshop/browser/webbrowser/reference/objects/internetexplorer.asp
use Win32::OLE qw( EVENTS in with valof );
use Win32::OLE::Variant;
Win32::OLE->Option( Warn => 0 );
$HomePage = "http://www.greyhats.org/new/";
$IE = Win32::OLE->GetActiveObject( 'InternetExplorer.Application' );
if( ! defined $IE )
{
print "Can not find open object. Creating one...\n";
$IE = Win32::OLE->new( 'InternetExplorer.Application', "Quit" )
or die "Unable to create a IE Object\n";
}
Win32::OLE->WithEvents( $IE, \&cleanExit, 'DWebBrowserEvents2' );
$IE->{Visible} = 1;
$IE->{RegisterAsDropTarget} = 1;
$IE->{RegisterAsBrowser} = 1;
$IE->Navigate( $HomePage );
# Let IE load the page
while( $IE->{Busy} )
{
while ($IE->SpinMessageLoop()) { select undef,undef,undef,0.25; }
}
$Doc = $IE->{Document};
$forms = $Doc->{forms} or die "Unable to retrieve forms";
$form = $forms->item("log_form") or die "Unable to find my form";
$elements = $form->{elements} or die "Can't get the elements";
$login = $elements->item("login",0) or die "Where is my login !?";
$pass = $elements->item("pass", 0) or die "I wonder why there isn't a
+pass";
$go = $elements->item("go", 0) or die "I want my button";
$login->{value} = "zejames";
$pass->{value} = "test";
$go->click;
# Do whatever you want.
sub cleanExit {
my( $obj, $event, @args ) = @_;
if ($event eq "OnQuit") {
print "Terminating\n";
undef $obj;
exit(1);
}
}