So sue me, maybe I'm just old, but I have a need to automate some browser-oriented stuff on Windows, I need to be able to pass the browser over to the user, and I just can't figure out how Selenium is supposed to work for me.

I turned to a tool I'd been intending to try out for years - Win32::IE::Mechanize - and to my utter surprise, found it is gone from CPAN!

Granted, it hadn't been updated since 2005 (really? it seems like yesterday...) but ... isn't it odd? Can it really be the case that I'm the only person in the world who intended to do something with IE one of these days? Because actually, OLE is kind of neat.

I've emailed Abe Timmerman, because I wouldn't mind adopting the module, but to no avail. Does anybody know about the considerations leading up to this decision? Because if there's some showstopping reason it just can't work any more, then I don't want to mess with it, but honestly, I'd like to maybe spruce it up a little and get it back onto CPAN.

Technically, I guess there's nothing stopping me from just uploading a new version given it's no longer there - but that seems really, um, is chutzpah-y a word? It just doesn't seem very polite.

What does the collective wisdom of the Monks dictate?

Update:

Now I see why Abe dropped the module entirely. In IE8, Microsoft did something very, very stupid, which effectively breaks OLE automation for IE, to wit: when you open up a new IE browser instance, IE assumes it will be running in Low Integrity Level, going out to the Internet. But if you retrieve a local page, that's Intranet, not Internet - and it's Medium Integrity Level. A single process can't change integrity levels. So IE invisibly opens a new tab in a new process and swaps it out.

That means the original one is defunct now. IE passes you a NewProcess event that can be trapped - but it doesn't contain a reference to a new OLE automation object or even the automation interface. It just contains, as far as I can tell, a scalar PID which - through some magickal Win32 manipulation - could possibly maybe perhaps be persuaded to yield a new OLE interface. Just one problem: I have no freaking clue at all how to do that, and apparently neither does anybody else I've found yet.

The Selenium team seems to have solved it in C++ for their IEDriver. That stuff is utterly impenetrable on first and second readings. That Microsofty interface junk is why I switched to Perl in the 90's in the first place, and I really didn't want to go back there.

So there are two things I could do. I could run all testing with a local microserver instance, which would be a quick and dirty solution. Or I could man up, figure out this Wininternals stuff, and get it into CPAN.

There's an MSDN article touching on the background for this. What to do about it is left as an exercise for the reader.

Update:

Holy Toledo. Put a MOTW (Mark of the Web, Google it) comment into a local file and IE will treat it as though it had come from the Protected Mode zone. You can re-zone any web content into a more restricted zone with the MOTW hack.

I've also found various stuff here that is tantalizingly close to what I need to do this right: this node for instance. I can't really figure out how to call CreatePerlObject from Perl - what are those parameters?!?

I've managed to figure out how to start a Medium IL Internet Explorer instance that can work with local files but not with remote ones (i.e. the same phenomenon in reverse). I think I've found the right interface to determine the zone of a given URL, but calling it looks daunting - Windows and Perl still don't really get along all that well.

This is getting pretty freaking interesting. But I don't have time for this! All I wanted to do was just automate Internet Explorer...

Update:

... Wait. MOTW fixes the problems with the test suite for IEMech.

OK, that's it. Win32::IE::Mechanize will be back on CPAN this week. I think I've earned it after losing a day and a half to this freaking mess Microsoft hath wrought. (I actually understand (kind of) where they're coming from - the security model is well considered and works for the userbase they have to make it work for - but did they really have to break Automation?)


In reply to Whatever happened to Win32::IE::Mechanize? by Michael Roberts

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.