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);
}
}
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.