The SessionNotCreatedException in Microsoft Edge typically occurs when the Selenium WebDriver cannot initialize a new browser session due to version mismatches, incompatible driver binaries, or corrupted user data profiles. This error prevents automation scripts from launching the browser, resulting in a failed test execution. To resolve this issue, you must ensure that your EdgeDriver binary matches the installed version of Microsoft Edge and that the WebDriver service is properly configured within your testing environment.
Understanding the Root Cause
This exception is not a general browser crash but a specific failure in the communication between your test script and the browser engine. The Selenium library attempts to start a new session by launching the EdgeDriver executable, which acts as a bridge to the browser. If the driver version does not exactly match the major version of the installed Microsoft Edge browser, the handshake fails. Additionally, if the user data directory is locked or corrupted, the driver may fail to create a fresh session, throwing this exception instead of opening the window.
Verifying Version Compatibility
The most common cause is a mismatch between the Edge browser version and the EdgeDriver version. You must check your current Edge version by navigating to
Settings >
Help and feedback >
About Microsoft Edge. Note the major version number (e.g., 114.x). Next, download the corresponding EdgeDriver from the official Microsoft repository. It is critical that the driver version matches the browser's major version precisely. Using an older or newer driver will result in the SessionNotCreatedException because the protocol versions differ.
If you are using a package manager like NuGet for .NET or pip for Python, ensure you are installing the latest stable release of the Selenium WebDriver bindings. Sometimes, updating the Selenium library alone is insufficient; you must also update the standalone driver executable. For example, in Python, you might use
selenium.webdriver.edge.service to explicitly point to the correct driver path, ensuring that the service starts with the expected binary.
Configuring the Driver Service Correctly
Improper configuration of the WebDriver service can lead to initialization failures. When creating the driver instance, you should explicitly define the service object. This allows you to control where the driver looks for its executable and how it handles logging. In Python, this involves importing
Service from
selenium.webdriver.edge.service and passing it to the
Edge constructor.
from selenium import webdriver
from selenium.webdriver.edge.service import Service
service = Service(executable_path='path/to/msedgedriver.exe')
driver = webdriver.Edge(service=service)
Ensure that the path to the executable is absolute and accessible. If the driver is in your system PATH, you can omit the
executable_path argument, but this often leads to ambiguity in complex environments. By specifying the path explicitly, you eliminate guesswork and ensure the test framework uses the correct binary. Also, verify that the driver file has execute permissions, especially on Linux or macOS systems, although this is less common for Windows-based Edge automation.
Handling User Data Profile Issues
Corrupted user data directories can prevent the browser from starting a new session. Selenium often uses a temporary profile directory, but if this directory becomes locked by another process or contains invalid configuration files, the launch fails. To mitigate this, you can configure the driver to use a clean, temporary directory for each session.
In your Selenium options, set the
user_data_dir to a unique, non-existent path for each test run. This ensures that no residual data interferes with the new session. Alternatively, you can disable extensions and clear cache settings before launching the browser. Extensions can sometimes hook into the browser startup process and cause conflicts. By disabling them via command-line arguments or Selenium options, you reduce the attack surface for potential crashes.
For more information on managing browser state and data persistence, you might find
How to Sync Microsoft Edge Data Across Devices useful for understanding how user profiles are structured. While syncing is different from local automation, knowing how Edge manages profile data helps in diagnosing why a local session might fail to initialize.
Troubleshooting Common Symptoms
If the above steps do not resolve the issue, check for other underlying problems. Ensure that Microsoft Edge is fully updated through the Windows Update settings. Outdated browsers may lack support for newer WebDriver protocols. Additionally, verify that no background processes are holding onto the Edge instance. Task Manager can reveal if an orphaned
msedge.exe process is running, which would block new sessions.
You should also check your antivirus or firewall software. Some security tools block the execution of automated drivers, interpreting them as malicious behavior. Adding exceptions for your test scripts and the EdgeDriver executable can resolve these false positives. Furthermore, if you are running tests in a CI/CD pipeline, ensure that the build agent has the correct version of Edge installed and that the environment variables are correctly set.
For cases where the browser repeatedly reappears or behaves unexpectedly during automation, reviewing
Stop Microsoft Edge from Reappearing Screen when Away from Computer in Windows 10 can help rule out OS-level interference that might disrupt long-running automation jobs.
Frequently Asked Questions
Why does the error occur even with matching versions?
Even with matching versions, permission issues or corrupted temporary directories can cause the exception. Ensure the driver has read and execute permissions and that the temp folder is writable by the user running the script.
Can I use ChromeDriver for Microsoft Edge?
No, you must use EdgeDriver. Although both browsers use Chromium, their APIs and command-line arguments differ slightly. Using the wrong driver will always result in a SessionNotCreatedException.
How do I clear the user data directory automatically?
You can delete the specified user data directory at the start of your test suite or configure Selenium to use a unique random directory for each session to avoid conflicts.
What if my Edge browser is auto-updating?
Auto-updates can change the browser version without changing the driver version. Always check the browser version before running tests and update the driver accordingly to maintain compatibility.
Does disabling extensions help with this error?
Yes, problematic extensions can interfere with the browser startup process. Disabling all extensions via Selenium options can isolate whether an extension is causing the session creation failure.