Free tools Windows power users keep installed
One-click scans. No signup required.
Most “Selenium IDE screenshot save” failures come from using the wrong save path for the job. Selenium IDE is a browser extension: when it saves a project or downloaded artifact, the browser handles the file download. Selenium WebDriver screenshots are a separate API operation that writes image data to a path supplied by your code. Identify which workflow you are using, then apply the matching fix.
This guide separates the two mechanisms, gives a repeatable diagnosis, and shows how to capture a screenshot without configuring a browser extension.
First, identify what is failing
Before changing settings, record four facts:
- Are you saving a Selenium IDE project, downloading a file during an IDE run, or calling a screenshot command in WebDriver code?
- What exact command or API call runs immediately before the failure?
- Where should the file appear, and does a browser download or “Save As” prompt open?
- Which Selenium IDE version, browser and version, operating system, and runner (IDE, command line, or WebDriver binding) are involved?
A project-save dialog that reappears is not the same defect as a WebDriver method returning false. Treating both as “the screenshot feature is broken” usually sends troubleshooting in the wrong direction.
How Selenium IDE saves files
The Selenium IDE FAQ explains that the extension does not have direct file-system access. Its save flow therefore uses the browser’s download mechanism. The browser, its download directory, and any integration listening for IDE messages can affect the result.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →#1 Best Overall
Check the browser download flow
- Run the smallest possible IDE project that performs the save or download.
- Watch for the browser’s download indicator, permission prompt, or Save As dialog. Let the operation finish before closing the tab or IDE.
- Open the browser’s download history and verify the actual destination. A file may be in the browser’s configured download directory rather than the folder you expected.
- Check that the destination is writable and that a file with the same name is not being renamed, blocked, or quarantined by the operating system.
- Repeat with automatic downloads temporarily enabled for the site, if your browser asks for permission. Restore your organization’s preferred policy afterward.
If the browser never starts a download, inspect the IDE command sequence and browser console. If a download starts but the file is missing, investigate browser policy, destination permissions, and security software rather than WebDriver screenshot APIs.
When the IDE asks where to save every time
Repeated Save As prompts are consistent with the extension’s download-based design. Confirm the browser’s “ask where to save each file” setting and the selected download directory. In managed environments, an administrator policy may force prompts or prevent automatic downloads.
Rank #2
An older Selenium IDE FAQ describes a Chrome integration case in which an external integration must answer the IDE project emit message; its example returns undefined. That FAQ was last updated June 3, 2019, so treat this as a historical integration-specific workaround, not a universal fix for current Chrome or Selenium IDE releases. First reproduce the issue without the integration and verify current versions.
WebDriver screenshots use a different path
WebDriver screenshot methods return image data and can save a PNG to a filename supplied by the binding. The Python API documentation specifies a full path and reports False for an I/O error. These checks apply to WebDriver code, not to Selenium IDE’s extension download flow.
Rank #3
Minimal Python example with an explicit writable path
from pathlib import Path
from selenium import webdriver
output = Path.cwd() / "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 OSError(f"WebDriver reported an I/O failure for {output}")
if not output.is_file() or output.stat().st_size == 0:
raise OSError(f"Screenshot was not created or is empty: {output}")
print(f"Saved {output.resolve()}")
finally:
driver.quit()
Use an absolute path when diagnosing. Create the directory first, check the Boolean result, and verify the resulting file. Relative paths depend on the process working directory, which may differ between a terminal, an IDE, and a CI runner.
Equivalent JavaScript (Node.js) check
import fs from "node:fs/promises";
import path from "node:path";
import { Builder } from "selenium-webdriver";
const output = path.resolve("artifacts", "home.png");
await fs.mkdir(path.dirname(output), { recursive: true });
const driver = await new Builder().forBrowser("chrome").build();
try {
await driver.get("https://example.com");
await driver.takeScreenshot().then(data => fs.writeFile(output, data, "base64"));
const stat = await fs.stat(output);
if (stat.size === 0) throw new Error("Screenshot is empty");
console.log(`Saved ${output}`);
} finally {
await driver.quit();
}
Binding method names and return types vary by language and version. Check the API reference for your binding before copying a call into production.
Rank #4
Compare the two failure paths
| Question | Selenium IDE extension | WebDriver code |
|---|---|---|
| Who writes the file? | The browser download subsystem, because the extension lacks direct file-system access. | Your WebDriver binding and the operating system path supplied by code. |
| What do you observe? | Download indicator, permission prompt, or Save As dialog. | API return value, exception, and file-system result. |
| First checks | Download destination, browser policy, integration listeners, and IDE/browser versions. | Absolute path, existing directory, write permission, return value, and runner working directory. |
| Evidence limits | Issue reports can be browser- and version-specific. | Path and I/O behavior depends on the binding and its version. |
Common symptoms and targeted fixes
The IDE opens Save As repeatedly
- Confirm whether the browser is configured to ask for every download.
- Check that the previous save actually completed before starting another.
- Disable the IDE integration temporarily. The 2019 FAQ workaround applies only to a particular Chrome message exchange and may not match current releases.
- Test a new browser profile without extensions or enterprise download policies.
No screenshot appears, but the test passes
- For WebDriver, print the resolved absolute path and inspect the Boolean return value or thrown exception.
- Verify that the process user can create and write in the directory.
- Check whether the runner cleans the workspace after the test or stores artifacts in a different CI directory.
- For IDE runs, inspect browser downloads rather than a WebDriver output folder.
“Permission denied,” “No such file,” or an empty file
- Create the parent directory before capture.
- Use a path outside protected system locations and confirm ownership and permissions.
- Avoid characters rejected by the operating system and ensure the extension is
.pngwhen the API expects PNG. - Check available disk space and security software quarantine logs.
The browser freezes after a download
SeleniumHQ issue reports describe freezes in particular download sequences, including one report opened December 2, 2019. Another report, opened June 28, 2023, describes repeated project-save behavior on Windows 11, Chrome 114, and Selenium IDE 3.17.2. These are individual, version-specific reports—not proof of a universal current defect. Reproduce with the smallest project, record exact versions, and test a clean profile before filing an issue.
Build a minimal reproduction before escalating
- Capture the exact IDE, browser, driver, binding, operating-system, and runner versions.
- Reduce the case to one navigation and one save or screenshot action.
- Record the intended path, resolved path, file size, and whether a browser download UI appeared.
- Collect browser-console, IDE, runner, and operating-system errors with timestamps.
- Run one IDE project-save/download test and one standalone WebDriver screenshot call. Comparing the results isolates extension/download behavior from API/file-write behavior.
Performance, reliability, and cost considerations
For local debugging, an explicit directory and post-write verification catch most mistakes earlier than opening an image viewer. In CI, write to the runner’s documented artifact directory and upload only after the test process closes the file. Keep screenshot names unique when tests run in parallel to avoid one worker overwriting another. A screenshot API may also avoid browser startup and download-policy variables, but it introduces its own network and rendering dependencies; handle timeouts and failed responses explicitly.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Best Value
Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server. One GET request returns a PNG, JPEG, WebP, or PDF. It accepts the cookie or consent banner like a visitor, then removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each cleanup step can be disabled. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and the response identifies the result with X-Page-Verdict and X-Billed headers.
cURL (see the ScreenshotNeo documentation):
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}`);
For AI-assisted workflows, its MCP server provides take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients. The Free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots. Create a free ScreenshotNeo account.
Frequently Asked Questions
Is a Selenium IDE project file the same as a screenshot file?
No. A project save uses the browser’s download flow, while a WebDriver screenshot API writes image data to a path supplied by code. Diagnose them separately.
Why does a relative screenshot path work locally but fail in CI?
The process working directory often differs in CI. Resolve and log an absolute path, create its parent directory, verify write access, and publish the runner’s artifact directory.
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallCrashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteShould an old Selenium IDE issue report determine my fix?
Use it as a reproduction clue only. Reports tied to specific Windows, Chrome, and IDE versions do not establish a universal current failure; verify your own versions and minimal case.
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.

