What this handbook covers
Opening Internet Explorer with Selenium looks like a one-liner, but it is famously the fussiest browser to automate. The driver imposes strict environment requirements, and skipping any of them produces cryptic errors at launch. This guide walks through the setup that actually works: getting the right driver, satisfying the IE-specific prerequisites, writing the launch code, and steering toward the modern replacement, IE mode in Microsoft Edge. The aim is to get you from a blank script to a reliably opening browser, and to explain the why behind each requirement so the errors make sense.
Examples use Python, but the same options and environment rules apply across the Java, C#, JavaScript and Ruby bindings, since the IE driver itself is shared.
When you should still automate IE
Be honest about whether you need IE at all. Internet Explorer as a standalone application is retired on current versions of Windows, and the wider web has moved on. The legitimate reasons to automate it are narrow: an internal line-of-business application that only renders correctly in IE, compatibility testing for an audience still on legacy systems, or maintaining an older test suite you cannot yet migrate. For anything new, the modern approach is IE mode in Edge, covered later. If none of those apply, a current browser will save you considerable pain.
Step one: get the IE driver
Selenium does not talk to Internet Explorer directly; it talks to a separate executable, the IEDriverServer, which translates WebDriver commands into browser actions. Download the version that matches your Selenium release, and make sure the architecture is right, because mixing a 32-bit and 64-bit driver with the wrong settings is a notorious source of slow typing and flaky behaviour. Place the executable somewhere on your system path so Selenium can find it, or point to it explicitly in code.
Step two: satisfy the IE prerequisites
The IE driver will refuse to start unless the browser environment meets several conditions. The two that catch almost everyone are Protected Mode and zoom. Protected Mode must be set to the same value across all four security zones, and the browser zoom must be at the default 100 percent. These are not arbitrary; both relate to how the driver locates and clicks elements, so it checks them before it will run.
- Set Protected Mode identically in every security zone.
- Set browser zoom to 100 percent.
- Disable enhanced protected mode where it interferes.
- Ensure only a single browser process model is in use.
Step three: launch the browser in code
With the driver in place and prerequisites met, opening IE is a short snippet. You create an options object, optionally relax the zone check for a controlled test environment, and instantiate the driver.
from selenium import webdriver
from selenium.webdriver.ie.options import Options
options = Options()
options.ignore_protected_mode_settings = True # test setups only
options.ignore_zoom_level = True
driver = webdriver.Ie(options=options)
driver.get("https://example.com")
print(driver.title)
The two ignore flags are convenient for a quick test, but they paper over the underlying configuration. For anything you intend to run repeatedly, fix the actual Protected Mode and zoom settings rather than relying on the flags, because the flags can mask real instability.
Understanding the Protected Mode error
The single most common failure is an exception complaining that Protected Mode is not the same across zones. Internet Explorer divides sites into security zones, and each has its own Protected Mode toggle. The driver demands consistency because mismatched zones change how the browser handles windows, which breaks its element handling. Aligning all four zones to the same value is the proper fix; the ignore flag is only a stopgap for isolated test machines.
Why the zoom requirement exists
The zoom check feels arbitrary until you know the reason. The IE driver computes the screen coordinates of elements before clicking them, and that maths assumes the default zoom level. At any other zoom, the calculated coordinates drift away from where the element actually sits, so clicks miss. Keeping zoom at 100 percent keeps the coordinate maths honest and your interactions accurate.
Tip: when an IE script clicks the wrong place or types into the wrong field, check the zoom level before you blame your selectors. A non-default zoom is a classic, easily overlooked cause of misplaced interactions in IE automation.
The modern path: IE mode in Edge
Because standalone IE is retired, the supported way to drive Internet Explorer behaviour today is IE mode inside Microsoft Edge. The IE driver can launch Edge and tell it to render a page using the legacy engine, giving you IE compatibility within a current, maintained browser. You configure the IE options to attach to Edge and enable IE mode, then drive the session as usual. For any new compatibility work, this is the route to choose over the legacy standalone browser.
Handling the no-headless reality
Unlike Chrome and Firefox, the IE driver has no genuine headless mode. It requires a real, visible browser window to operate, which complicates running on servers and continuous integration agents. The usual workarounds are running inside a desktop session, using a virtual display, or executing on a dedicated Windows machine or VM that keeps a session active. Plan your infrastructure around this constraint rather than expecting a headless flag.
Configuring a proxy in IE
Routing IE through a proxy is done through the WebDriver proxy capability, which sets the address the browser sends its traffic through. Because IE historically shares its proxy settings with the wider system, be deliberate about whether you are setting a per-session proxy or changing system configuration, and clean up afterward so you do not leave the machine pointing at a proxy that is no longer running.
Who this guide suits
This handbook serves QA engineers maintaining legacy test suites, teams supporting internal applications that still depend on Internet Explorer, and developers tasked with compatibility checks for users on older systems. It also helps anyone modernising an IE workflow toward Edge IE mode, since the configuration knowledge carries straight over.
Common use cases
- Regression testing internal apps that only render in IE.
- Compatibility checks for audiences on legacy Windows.
- Maintaining older Selenium suites during a migration.
- Reproducing IE-specific rendering or scripting bugs.
- Validating that a site degrades gracefully on the legacy engine.
A setup checklist
- Does the IEDriverServer version match my Selenium release?
- Is Protected Mode identical across all four zones?
- Is the browser zoom at the default 100 percent?
- Am I using Edge IE mode for any new work?
- Have I planned for the lack of a true headless mode?
- Is a proxy configured and cleaned up after the session?
Common mistakes to avoid
The recurring errors are a driver version that does not match Selenium, mismatched Protected Mode across zones, a non-default zoom that throws off clicks, relying on the ignore flags instead of fixing the real settings, expecting a headless mode that does not exist, and forgetting to reset a system-wide proxy after the run. Address the environment properly and IE automation becomes far steadier, even if it is never quite as effortless as a modern browser.
Where proxies fit in
Whether you are gathering compatibility data, running broad regression sweeps, or testing how a site behaves from different regions on the legacy engine, repeated sessions from one IP draw throttling and blocks. Routing IE through proxies spreads the traffic across many addresses so the target sees ordinary, distributed visitors. For automation and testing workloads, stable datacenter proxies often suffice, while residential proxies help when you need to look like a real user from a specific place.
Recommended proxy providers
Getting IE to open is the configuration battle; keeping many sessions unblocked is where a dependable proxy earns its place. We weigh providers on value and fit rather than on marketing.
Beyond our featured value pick, a few established names merit a fair look:
- Bright Data offers a large network and detailed targeting, suited to broad testing programmes that accept a premium.
- Smartproxy keeps setup simple with clear docs, a comfortable middle ground for growing automation suites.
- Oxylabs handles sustained, high-volume runs with wide coverage and strong support when reliability is paramount.
Whichever you shortlist, test each against your real targets and weigh success rate against cost before committing.
How to get started
Download a matching IEDriverServer and put it on your path, align Protected Mode across all zones, and set zoom to 100 percent. Run the short launch snippet to confirm the browser opens, then point your script at IE mode in Edge if you are starting fresh. Once a single session is stable, attach a proxy and a sensible delay before you scale to many parallel runs while watching your success rate.
Key takeaways
Opening IE with Selenium is less about code and more about environment: a matching driver, consistent Protected Mode across zones, and default zoom are the foundations. Standalone IE is retired, so prefer IE mode in Edge for new work, and remember there is no true headless option. Pair the setup with a value-focused proxy provider and sensible session limits, and even this notoriously fussy browser becomes practical to automate at scale.
Related proxy guides
Frequently asked questions
Questions or a correction? Email info@proxyranked.com. Always confirm a provider's exact package, proxy type and locations before ordering.