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); } }

In reply to Driving Internet Explorer with Perl by zejames

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • 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:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.