What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

Short answer: a Selenium hover that opens for a fraction of a second in Internet Explorer 11 is usually an IE Driver limitation, not a bad locator or missing wait. IE Driver sends native, operating-system mouse events; when the physical cursor is inside the IE window, IE can perform its own hit-testing and immediately cancel the synthetic hover. Set up IE exactly as the driver requires, keep the browser focused, move the target into view, and call the standard Actions API. If the test still depends on standalone IE, plan a move to Edge IE Compatibility Mode: Selenium officially ended standalone Internet Explorer support in June 2022.

Why an IE11 hover appears and then disappears

InternetExplorerDriver uses native mouse input rather than a browser-only event simulation. Selenium documents a specific failure mode: when your physical mouse pointer is within the IE browser window, a hover may work briefly and then revert because IE hit-tests the real pointer position. The documented limitation is that “when you attempt to hover over elements, and your physical mouse cursor is within the boundaries of the IE browser window, the hover will not work.”

That explains the characteristic symptom: the menu opens for a fraction of a second, then closes. Replacing moveToElement with longer waits, changing the locator, or adding repeated mouse moves does not remove the native-event conflict. First stabilize the machine and browser; only then debug the test code.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Prepare IE11 before changing your test

IE Driver has strict environmental prerequisites. Apply these settings on the machine that actually runs the test, including a remote desktop or CI worker.

Setting Required value Why it matters
Protected Mode Identical in all four zones: Internet, Local intranet, Trusted sites and Restricted sites (all enabled or all disabled) Different zone security levels can prevent consistent native input.
Enhanced Protected Mode Disabled in Internet Options > Advanced The IE Driver prerequisites require it to be off.
IE zoom 100% Native coordinates are calculated against the browser’s scale.
Windows display scaling 100% for “Change the size of text, apps, and other items” High-DPI scaling can shift the physical point reached by a native event.
IE11 FEATURE_BFCACHE Create or edit the documented 32-bit registry location (or its Wow6432Node equivalent) and add the DWORD iexplore.exe with value 0 IE11’s back/forward cache can interfere with driver state.

Apply the registry change carefully

Run regedit with the permissions used by your test account. Under the documented FEATURE_BFCACHE key, create a DWORD named iexplore.exe and set it to hexadecimal or decimal 0. On 64-bit Windows, IE Driver may use the 32-bit or Wow6432Node branch, so use the branch documented for your driver architecture. Close all IE processes and start a new session after changing the value. Registry policy can be centrally managed; if the value keeps reverting, ask the machine administrator to enforce it.

Use Selenium Actions, not JavaScript, for the hover

The supported operation is an Actions move to the element. Selenium defines moveToElement as moving to the element’s in-view center. The element must be in the viewport; an off-screen target causes the command to fail.

Java example

WebElement hoverable = driver.findElement(By.id("hover"));
new Actions(driver)
    .moveToElement(hoverable)
    .perform();

Use the same driver instance that created the element. If the menu is rendered only after the pointer arrives, wait for the element to be present and displayed before the action, then wait for the menu’s visible state after the action. A wait cannot fix native hit-testing, but it prevents a separate race in which the element is replaced while you move to it.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Python example with viewport positioning

from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains

element = driver.find_element(By.ID, "hover")
driver.execute_script("arguments[0].scrollIntoView(true);", element)
ActionChains(driver).move_to_element(element).perform()

The JavaScript call here is only a positioning aid. The hover itself remains a WebDriver Actions operation, so the test still exercises the native path that IE Driver supports.

Keep the target stable

  • Locate the element after navigation and after any framework re-render that replaces it.
  • Scroll it into view before moveToElement; do not assume an off-screen element will be scrolled reliably by every page layout.
  • Use a selector for the actual hoverable node, not a hidden child or an overlay that intercepts the pointer.
  • After moving, assert the application’s result (for example, a submenu is displayed) rather than asserting only that the command returned.

Keep IE foregrounded and the real pointer out of the window

Native input is sensitive to desktop focus. Run IE in the foreground while the action executes. Selenium explains that IE may not fully respect native mouse messages when its window lacks focus.

Do not move your physical mouse into the IE window during the automated hover. If a person, remote-control tool or another test moves the real pointer over the page, IE can hit-test that location and undo the synthetic hover. On a shared desktop, give the test exclusive control of the session; avoid parallel jobs that share one Windows desktop.

When the menu opens and immediately closes, check focus and physical-pointer interference before changing waits or locators. This symptom matches Selenium’s documented IE behavior.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A practical troubleshooting sequence

  1. Confirm the execution mode. Verify that the test creates an InternetExplorerDriver session with an IEDriverServer version compatible with your Selenium binding and target machine. If the host has Edge but no standalone IE, use Selenium’s IE Compatibility Mode options; IE Driver can launch or attach to Edge for that mode.
  2. Normalize IE and Windows. Match Protected Mode across all zones, disable Enhanced Protected Mode, set IE zoom to 100%, set Windows display scaling to 100%, and apply the IE11 FEATURE_BFCACHE value of 0.
  3. Reboot the browser session. Close every IE process after policy or registry changes. A stale process can retain old settings.
  4. Prove the target is visible. Capture the element’s displayed state, scroll it into view, and ensure no fixed header or modal covers it.
  5. Run the minimal Actions call. Use new Actions(driver).moveToElement(element).perform() (or Python’s equivalent) without extra pointer moves.
  6. Protect focus. Keep IE foregrounded and keep the physical cursor outside the IE window for the whole action.
  7. Classify the result. If the hover is stable now, the issue was environment or focus. If it still flashes only when a real pointer enters the window, you have reproduced the documented driver/browser limitation. If it fails before any visual change, investigate the element, viewport, zone settings and driver version.

Common symptoms, causes and fixes

Symptom Likely cause Action
Hover opens, then closes within a second Physical cursor inside the IE window or IE lacks foreground focus Move the real cursor away, keep IE foregrounded, and prevent desktop interference.
Actions command errors before the menu opens Target is outside the viewport, hidden, or stale Locate a fresh element, scroll it into view, and verify it is displayed.
Coordinates are consistently offset IE zoom or Windows display scaling is not 100% Set both scales to 100%, restart IE, and retry.
Only some sites fail Different IE security zones have different Protected Mode values, or a page overlay intercepts input Make all four zone settings identical and inspect the page for overlays.
Behavior changes after Back or Forward IE11 back/forward cache is enabled Set FEATURE_BFCACHEiexplore.exe to DWORD 0 in the documented registry branch.
Works locally but not on a build machine Different scaling, focus, policy, driver architecture or desktop session Compare the complete prerequisite table and run the worker with an interactive, exclusive desktop.

Should you keep fixing standalone IE11?

Selenium states that standalone Internet Explorer has not been officially supported since June 2022. That makes a permanently IE-only test strategy a maintenance risk even if you can stabilize today’s hover.

For applications that still require the IE rendering and compatibility behavior, the maintained route is Microsoft Edge IE Compatibility Mode. Selenium’s current documentation describes using IE Driver to launch or attach to Edge in that mode. Evaluate the move on four axes:

  • Reliability: compare a stabilized legacy IE machine with an Edge IE-mode worker under the same test load.
  • Native-event fidelity: keep Actions-based input when the test must reproduce user input; use application-level JavaScript event dispatch only when your test policy explicitly permits it.
  • Maintenance: Edge IE mode is the documented path, while standalone IE is unsupported.
  • Operations: native mouse input still needs foreground focus and exclusive desktop control, so isolate the worker either way.

Selenium recommends the 32-bit IE driver because of known limitations in the 64-bit driver. Match the driver architecture to the compatibility-mode setup you deploy and record that choice with the test environment.

Reliability and performance practices

  • Use one dedicated Windows session per parallel job; native coordinates cannot be safely multiplexed through one desktop.
  • Set scaling and zoom once in the machine image instead of changing them during a run.
  • Prefer a single move followed by an assertion. Repeated moves add timing variance and can make a physical-pointer race more likely.
  • Keep waits condition-based (element displayed, submenu visible) rather than using large fixed sleeps. Sleeps address page timing, not IE’s hit-testing defect.
  • Log browser mode, driver version, zone settings, zoom, display scaling and whether the window was foregrounded. Those facts make a failure reproducible.
  • Do not claim a success percentage from this workaround: Selenium’s canonical documentation provides the limitation and prerequisites, not an independent benchmark.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Or skip the browser setup

If your goal is a clean visual capture rather than an interactive hover assertion, ScreenshotNeo provides a one-request website screenshot API. It accepts the consent banner like a visitor and removes more than 60 known consent platforms, newsletter popups and chat widgets before capture; each cleanup step can be turned off. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads and cache hits are not billed, and the response reports the page verdict and billing status in X-Page-Verdict and X-Billed headers. Its MCP server exposes take_screenshot, get_page_info and capture_pdf to Claude, Cursor and other MCP clients.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

cURL

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

See the ScreenshotNeo API documentation for authentication and the 63 capture options, including full-page lazy-image loading, CSS-selector element capture, dark mode, device and viewport settings, retina scale, PDF paper and page controls, custom CSS or JavaScript, click and wait actions, request blocking, headers, cookies, user agent, timezone, geolocation, transparent backgrounds, resizing, selectable cache TTLs, signed links, asynchronous webhooks, bulk capture and usage data.

Python

import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)

Node.js

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

The Free plan includes 1,000 screenshots per month with no card. Paid plans start at $5 for 3,000 shots; every feature is available on every plan. If that fits your capture workflow, sign up for the free 1,000-shot plan.

Frequently Asked Questions

Can ScreenshotNeo verify that an IE11 hover works?

No. ScreenshotNeo captures a rendered page; it does not replace an interactive Selenium assertion that a pointer-triggered menu opens. Use the stabilized Actions procedure when hover behavior itself is under test.

What should I record when moving a test to Edge IE Compatibility Mode?

Record the Edge compatibility-mode configuration, IE Driver architecture, Protected Mode settings, scaling values and foreground-session policy so a native-input failure can be compared with the old worker.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.