A Selenium IDE “screenshot save failure” usually comes from using the wrong save path for the job. Selenium IDE is a browser extension: it saves projects and downloaded artifacts through the browser’s download flow because the extension cannot write directly to your file system. Selenium WebDriver screenshot methods are different: your test code receives image data and must write it to a valid, writable path. Identify which workflow you are using, then apply the matching fix below.
First, identify what is failing
Before changing settings, record the exact action that fails. These are separate operations with different causes:
- Selenium IDE project save: exporting or saving an IDE project through the extension.
- A screenshot command in an IDE workflow: an extension command may trigger a browser download or another integration.
- WebDriver screenshot code: a binding such as Python, Java, JavaScript or C# captures an image and writes it to a path.
- An automatic failure artifact: a test runner captures a screenshot after an assertion or navigation error.
Write down the IDE version, browser and version, operating system, WebDriver binding and version, runner, exact command or method, intended output path, whether a download prompt appears, and the resulting file’s actual location and size. A “Save As” dialog points to the extension/download path; a method returning false or throwing an I/O exception points to WebDriver or operating-system file handling.
How Selenium IDE saves files
The Selenium IDE FAQ explains that, as a browser extension, IDE does not have direct file-system access. Its save functionality therefore uses the browser’s normal download mechanism. The browser, not Selenium IDE alone, decides whether to show a prompt, apply a default download directory, rename a duplicate, or block a download.
#1 Best Overall
Check the browser download result
- Run the save or export action once and watch the browser’s download shelf, bubble or download manager.
- Open the browser’s download history and locate the newest file. Do not rely only on the directory you expected.
- Check the browser’s configured download directory and whether “ask where to save each file” is enabled.
- Confirm that the destination directory exists and that your account can create files there.
- Look for duplicate-name behavior: the browser may create a file such as project (1) rather than overwrite the original.
- Check security software, enterprise policies and browser permissions that can block extension downloads.
If the file appears in Downloads but not in your project folder, the save succeeded and the issue is destination configuration. Move the file manually or change the browser’s download setting, then repeat the export.
When Selenium IDE asks where to save every time
A repeated prompt is consistent with the browser’s download preference, not proof that screenshot capture is broken. Enable a fixed download directory if your browser policy permits it, or deliberately choose the destination on each save. Test with a small project export first; this separates a general download problem from a screenshot-specific command.
External integrations and the old Chrome workaround
The Selenium IDE FAQ describes a Chrome integration issue in which an external integration must answer Selenium IDE’s project emit message. Its example response is undefined. That FAQ was last updated June 3, 2019, so treat this as a historical compatibility clue rather than a universal current fix. Confirm your current Selenium IDE and Chrome versions and the integration’s documentation before implementing it. Do not add an external listener merely because a screenshot is missing.
Rank #2
Fix WebDriver screenshot saves
WebDriver screenshot APIs are independent of Selenium IDE’s extension download path. The API captures an image and saves it to the filename you supply. Selenium’s documentation specifies a PNG output for the standard save method; the Python reference says to use a full path and reports False for an I/O error.
Python: a minimal, checked example
from pathlib import Path
from selenium import webdriver
output = Path("/absolute/path/to/artifacts/home.png")
output.parent.mkdir(parents=True, exist_ok=True)
driver = webdriver.Chrome()
try:
driver.get("https://example.com")
ok = driver.save_screenshot(str(output))
if not ok:
raise IOError(f"Selenium could not write {output}")
if not output.is_file() or output.stat().st_size == 0:
raise IOError(f"Screenshot was not created correctly: {output}")
print(f"Saved {output} ({output.stat().st_size} bytes)")
finally:
driver.quit()
Replace the example with an absolute path appropriate to your operating system. On Windows, use a raw string such as r"C:\test-artifacts\home.png" or a doubled backslash. On Linux and macOS, verify ownership and permissions with your normal file-management tools. Always inspect the Boolean result and then verify that the file exists and has non-zero size.
Other bindings
Java, JavaScript and .NET bindings expose equivalent screenshot functionality, but method names, return types and supported formats vary by binding version. Consult the API reference for the exact version installed by your project. The same checks remain valid: create the parent directory, use an absolute path, check the returned value or exception, and verify the resulting file.
Rank #3
Failure screenshots in a test runner
If screenshots are captured only after failures, the original test error can mask a second file-write error. In the failure hook, log the target path before calling the screenshot method; create the directory during runner startup; and catch or report screenshot-save exceptions separately from assertion failures. Use a unique filename containing a test name and timestamp, but sanitize characters that are illegal in your operating system.
Compare the two save paths
| Characteristic | Selenium IDE extension | WebDriver API |
|---|---|---|
| Who writes the file? | The browser download subsystem, because the extension lacks direct file-system access | Your binding and operating-system file I/O |
| Typical symptom | Save prompt repeats, file lands in an unexpected directory, or download is blocked | False return, exception, missing file, or zero-byte output |
| First check | Download history, browser directory and permissions | Absolute path, existing parent directory and writable account |
| Version sensitivity | Browser, extension and integrations interact | Binding, driver and browser versions interact |
| Best diagnostic | Export a minimal IDE project and locate the downloaded file | Run a minimal one-page capture and verify the file immediately |
Common symptoms and targeted fixes
“The screenshot is not appearing”
Determine whether “not appearing” means no download notification, no file in the expected directory, or no image after a WebDriver call. For IDE, search the browser’s download history and check for a renamed file. For WebDriver, print the resolved absolute path, check the return value, and inspect the parent directory.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Fix the driver behind crashes, sound loss and screen glitches3Clear out junk files and repair common Windows errors“Save As” opens repeatedly on Windows
A SeleniumHQ issue report describes repeated project-save dialogs on Windows 11 with Chrome 114 and Selenium IDE 3.17.2. That is a version-specific user report, not evidence of a universal defect. Reproduce it with a minimal project, record current versions, and test whether changing the browser download preference changes the behavior.
Rank #4
The browser freezes after a download
Another SeleniumHQ report describes a freeze after a browser download in a particular Chrome/Firefox sequence. Treat it as a clue to reproduce, not a general rule. Remove unrelated commands, test one download, and compare browsers and versions. If only one combination freezes, preserve the minimal project and complete version details for an issue report.
The API returns success but the file cannot be opened
Check that the path points to the file you inspected, not a relative path resolved from a different runner working directory. Confirm the file size, extension and permissions. A valid path with a zero-byte file indicates an I/O or interrupted-write problem; a non-zero file that image software rejects may indicate that another process replaced or locked it.
Build a minimal reproduction
- Create a new IDE project containing one page-open action and one save/export action, or write a WebDriver script that opens one stable page and captures one screenshot.
- Use a newly created, writable directory with an absolute path.
- Run outside your full suite and disable unrelated extensions, integrations and post-processing.
- Record exact browser, driver, IDE, binding and operating-system versions, plus the command, path, download behavior, file size and console or runner error.
- Compare the IDE reproduction with the WebDriver reproduction. A working WebDriver file does not prove the IDE download path is configured, and a working IDE export does not prove your runner’s path is writable.
This evidence lets maintainers distinguish browser-download behavior from API/file-system errors without claiming that a version-specific report applies to every installation.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Best Value
Performance, reliability and cost considerations
Full-page screenshots and pages that load many images take longer and produce larger files than viewport captures. Wait for the page state your test actually needs, and avoid writing every intermediate screenshot unless it helps diagnosis. Use per-test artifact directories and deterministic names so parallel workers do not overwrite one another. Ensure cleanup does not run before the runner has finished flushing the image. Selenium’s APIs do not provide a published failure-rate statistic; reliability depends on your browser, driver, page, path and environment.
Or skip the browser setup
ScreenshotNeo provides a website screenshot API and MCP server for developers. One GET request returns PNG, JPEG, WebP or PDF. It accepts cookie and consent banners as a visitor and removes more than 60 known consent platforms, newsletter popups and chat widgets before capture; each step can be disabled. Bot checks, blank pages, timeouts, failed loads and cache hits are not billed, and response headers identify the page verdict and billing status. Its MCP server exposes take_screenshot, get_page_info and capture_pdf for Claude, Cursor and other MCP clients.
See the ScreenshotNeo documentation for all options. The simplest call is:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
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}`);
Plans include 1,000 screenshots per month free with no card; paid plans start at $5 for 3,000. Create a free ScreenshotNeo account to try it.
Free tools Windows power users keep installed
One-click scans. No signup required.
Frequently Asked Questions
Does Selenium IDE itself write screenshots directly to my hard drive?
No. As a browser extension, Selenium IDE uses the browser’s download mechanism rather than direct file-system access.
What does a false result from Python save_screenshot mean?
The Python API documents False for an I/O error. Check the full path, parent directory and write permissions, then verify the file exists and is non-zero.
Are SeleniumHQ issue reports proof that all users have the same bug?
No. The cited reports describe specific browser, operating-system and Selenium IDE versions. Reproduce with a minimal case and record your own versions before treating them as relevant.
Quick Recap
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.
Recommended Free Tools

