What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
Windows is not an unsupported Selenium screenshot platform. When save_screenshot() works on an iPhone or iPad but fails on Windows, the difference is usually in one of five layers: browser/driver compatibility, window geometry, headed versus headless execution, modal or crashed session state, or ordinary file I/O. iOS adds its own safaridriver, Appium/XCUITest and device-model variables, so an apparent success there does not prove the page or test is portable.
What Selenium is supposed to do
WebDriver defines page and element screenshot commands across operating systems. Selenium bindings expose methods such as Python’s driver.save_screenshot(path), JavaScript’s takeScreenshot(), and element screenshot methods. Chromium documents both session and element screenshot endpoints as implemented. A Windows-only error is therefore a diagnostic signal, not evidence that Selenium screenshots require iOS or that Windows is unsupported.
Start by preserving the exact exception or HTTP status. A returned False from Python is different from a WebDriver timeout, an “unknown error” response, or a zero-byte file. Those outcomes point to different layers.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →How to reproduce the failure with a controlled Python test
Use a minimal page first. This separates Selenium, ChromeDriver and filesystem problems from application JavaScript, authentication and layout complexity.
#1 Best Overall
- 14" diagonal, 1366x768 resolution, HD BrightView LED, Glossy NON-TOUCH Display
- Install and pin the components used by the test. Record the Selenium binding version, browser version and driver version. If you use a driver manager or a CI image, record the resolved binary rather than only the package name.
- Create an absolute output directory. Relative paths depend on the process working directory, which often differs between a local terminal, a Windows service and a test runner.
- Set the window size explicitly. Do not rely on a maximized desktop, RDP session or machine display scale.
- Capture the return value and file metadata. A successful command should produce a non-empty PNG.
Example:
from pathlib import Path
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
out = Path(r'C:selenium-artifacts')
out.mkdir(parents=True, exist_ok=True)
shot = out / 'home.png'
options = Options()
options.add_argument('--window-size=1365,900')
# Add --headless=new only when you intentionally want headless execution.
driver = webdriver.Chrome(options=options)
try:
driver.get('https://example.com')
print('url:', driver.current_url)
print('window:', driver.get_window_rect())
ok = driver.save_screenshot(str(shot))
print('save_screenshot returned:', ok)
print('exists:', shot.exists(), 'bytes:', shot.stat().st_size if shot.exists() else 0)
finally:
driver.quit()
Python’s Selenium API documents that the save method returns False on an I/O error. Always check it; do not assume that no exception means a file was written.
Test an element separately
Page capture and element capture exercise different code paths. If the page shot works but an element shot fails, investigate selectors, visibility and coordinates rather than the output directory.
from selenium.webdriver.common.by import By
card = driver.find_element(By.CSS_SELECTOR, 'main')
assert card.screenshot(str(out / 'main.png'))
Run this after navigation and before quitting the driver. An element outside the current viewport, an element whose layout is still moving, or a stale element reference can make this path fail while the session screenshot remains healthy.
Crashes, 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 minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Why Windows failures are common-looking
Browser and driver regressions or mismatches
ChromeDriver release notes include screenshot-specific fixes: a lock when an alert appeared during capture, re-enabled screenshot integration tests, Windows headless-shell test fixes and historical screenshot-size corrections. A browser that auto-updated while the driver stayed pinned can expose one of these defects.
Compare the browser and driver major versions, then read the release notes for the exact versions in your failing run. Pin a compatible pair in CI instead of adding random flags. Save the complete WebDriver error, browser log and driver log so a regression can be distinguished from a test bug.
Rank #2
- 1.1 GHz (boost up to 2.4GHz) Intel Celeron N5030 Quad-Core
- 4GB DDR4 System Memory; 128GB Solid State Drive
- 11.6" HD (1366 x 768) Multi-Touch Display
- Combo headphone/microphone jack - Noble Wedge Lock slot - HDMI; 2 USB 3.1 Gen 1
- Windows 11 Pro
Window geometry, scaling and viewport differences
Windows desktop scale, maximization state, remote-desktop dimensions and browser chrome all affect the content viewport. The same CSS pixels can therefore produce different PNG dimensions on two machines. Element coordinates can also become invalid when a responsive breakpoint changes.
Set --window-size=width,height or call the WebDriver window-rectangle API, then log the resulting rectangle. If image dimensions matter, record the device scale factor when your environment exposes it and compare the actual PNG dimensions, not only the requested window size.
Free tools Windows power users keep installed
One-click scans. No signup required.
Headed versus headless mode
Headed Chrome depends on a usable desktop session. A Windows service, scheduled task or locked RDP session may start Chrome without the display context your interactive test had. Headless Chrome removes that visible-desktop dependency. Chrome’s headless documentation demonstrates --screenshot together with --window-size and explains that a display server such as Xvfb is unnecessary.
Headless is not automatically identical to headed rendering. Validate fonts, GPU-accelerated content, downloads and viewport dimensions in the mode you will ship. Older Chrome guidance said --disable-gpu was temporarily needed on Windows; treat that as historical and use it only when the documentation or logs for your browser version justify it.
Alerts, prompts and crashed sessions
A JavaScript alert can block the command channel. ChromeDriver has documented a screenshot lock when an alert fired during capture. A crashed tab or browser process produces a different failure, often an invalid-session or disconnected-driver error.
Rank #3
- 256 GB SSD of storage.
- Multitasking is easy with 16GB of RAM
- Equipped with a blazing fast Core i5 2.00 GHz processor.
Before retrying, log driver.current_url, the complete exception and browser/driver logs. If an alert is expected, handle it explicitly:
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →from selenium.common.exceptions import NoAlertPresentException
try:
alert = driver.switch_to.alert
print('alert:', alert.text)
alert.accept()
except NoAlertPresentException:
pass
assert driver.save_screenshot(str(shot))
Do not hide every exception with an immediate retry. A retry against a crashed session only obscures the first failure; create a fresh session after collecting diagnostics.
Path permissions and file-system assumptions
Windows services commonly run under an account that cannot write to a developer’s desktop or project directory. A relative path may resolve to a system directory, and antivirus or cleanup jobs can remove a file immediately after creation.
- Use an absolute path in a directory created by the test.
- Use a
.pngextension and ensure the parent directory exists. - Check the Boolean result, file existence and byte count.
- Log the effective Windows account and working directory in CI.
- Do not treat a zero-byte artifact as a valid screenshot.
Why iOS can appear to work
Apple’s Safari WebDriver implementation is safaridriver. On iOS and iPadOS, WebDriver must be enabled, and Apple’s automation windows are isolated from ordinary browsing windows. That different execution context can avoid a Windows desktop-session or permissions problem.
It is not an iOS guarantee. Selenium issue #16555 records HTTP 500 UnknownException for a screenshot on an 11th-generation iPad while the same attempt did not fail on an iPad Air 4. When comparing devices, log the model, iOS version, Safari version, Selenium binding, Appium/XCUITest bridge and WebDriverAgent state. Keep the page, viewport and software versions constant before attributing a difference to the operating system.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problemsRank #4
- EFFORTLESS EVERYDAY PERFORMANCE: Powered by Intel Celeron N4020 processor and Windows 11 Home system, delivering reliable, low-power efficiency for daily tasks like document editing, email, online classes, and web browsing
- 15.6-INCH FULL HD DISPLAY: Enjoy immersive visuals on the 15.6" FHD (1920x1080) anti-glare screen with micro-edge bezels. Delivers clear details and comfortable viewing for long study sessions, working on spreadsheets, and video playback
- RESPONSIVE MULTITASKING & STORAGE: Built with 4GB LPDDR4 RAM and 128GB eMMC storage for smooth daily essential use. Expand your storage by up to 1TB via the integrated TF card slot to easily store movies, photos, and working files
- ADVANCED CONNECTIVITY: Outfitted with 2x Full-Featured Type-C ports for data transfer, fast charging, and dual-monitor output, alongside 2x USB 3.2 Gen1 ports and a 3.5mm audio jack for complete peripheral compatibility
- LIGHTWEIGHT & SILENT OPERATION: Slim and portable for effortless travel or commuting. Features a 1MP HD webcam for remote meetings, 38Wh battery with 45W Type-C fast charging, and a fanless silent design for peaceful work environments.
Compare the two environments on the same axes
| Axis | Windows run | iPhone or iPad run | What a difference suggests |
|---|---|---|---|
| Browser and driver | Browser version, ChromeDriver version | Safari version, safaridriver or bridge version | Compatibility or release regression |
| Automation stack | Selenium binding and WebDriver | Selenium plus Appium/XCUITest and WebDriverAgent when used | Bridge or session-state issue |
| Execution mode | Headed, headless, service or RDP | Device automation window | Display dependency or isolated context |
| Geometry | Window rectangle, CSS viewport, scale | Device viewport and scale | Responsive layout or element-coordinate failure |
| Modal state | Alert, prompt, permission dialog | Safari or system prompt | Blocked screenshot command |
| Output | Absolute path, account, permissions | Bridge-returned image or host path | File I/O versus transport failure |
| Error identity | Boolean, exception and status | HTTP status and device logs | Separates layers instead of blaming the OS |
A diagnostic sequence that usually isolates the cause
- Record OS or device, browser and browser version, Selenium binding, driver or Appium version, headed/headless mode, window rectangle, scale when available, current URL and the complete exception.
- Reproduce on a minimal page with the documented page screenshot method.
- Run an element screenshot separately. Page failure points to the session or renderer; element-only failure points to layout, selector or coordinates.
- Use a fixed window size and an absolute writable PNG path. Check the Boolean return and file size.
- Run a controlled headless test with a fixed
--window-size. Add legacy flags only when version-specific documentation or logs support them. - Check ChromeDriver release notes and align browser and driver versions, especially when alerts or headless mode are involved.
- For iOS, verify WebDriver enablement and the automation bridge, then repeat on another model only after the same page and software versions are controlled.
Troubleshooting by symptom
save_screenshot() returns False
Treat this as an output failure first: verify the absolute directory, account permissions, extension, free disk space and resulting file size. If the path is valid, rerun with driver logs to rule out a renderer or session error.
“No such file or directory” or access denied
Create the parent directory before navigation and write to a path owned by the test account. Avoid protected Windows locations and confirm that a service account, not your interactive account, is running the test.
Unknown error, HTTP 500 or timeout
Capture the full response, current URL, browser log and driver log. Check for an alert, a crashed tab, a hung page load or a known browser-driver regression. Start a new session after a crash rather than reusing the old one.
Blank or partially rendered image
Wait for a stable application condition, not merely a fixed sleep: wait for a selector, document state or network-idle condition implemented by your test. Lazy images and animations may still be changing. For diagnosis, disable animation with test CSS and compare a screenshot after the target element is visible.
Wrong dimensions or clipped content
Log the actual window rectangle and PNG dimensions. Set the viewport explicitly, distinguish viewport size from full-page capture, and test at the responsive breakpoint that matters. A maximized window is not a reproducible specification.
Best Value
- WINDOWS 11 | STABLE PERFORMANCE: Powered by Intel Celeron N4020 processor and Windows 11 system, this laptop delivers stable performance for everyday computing tasks. It supports web browsing, online learning, document editing, email communication, and basic office work with optimized power efficiency, providing a practical and reliable experience for essential daily use for daily use.
- 15.6” FHD IPS DISPLAY: Features a 15.6-inch Full HD IPS display with narrow bezels, offering wider viewing angles and clearer image details compared to standard panels. The improved screen-to-body ratio enhances visual experience for study, reading, document work, and video playback, making it suitable for both productivity and entertainment use.
- 4GB DDR4 + 128GB eMMC STORAGE: Equipped with 4GB DDR4 memory and 128GB eMMC storage for everyday basics such as browsing, documents, email, and online learning platforms. The built-in TF card slot supports storage expansion up to 1TB, giving you more flexibility for files, photos, videos, and daily documents. TF card not included.
- CONNECTIVITY & PORTS: Includes 1× TF card slot, 2× USB 3.2 Gen1 ports, and 2× full-featured Type-C ports (USB 3.2 Gen1). The Type-C ports support data transfer, charging, and video output, enabling flexible connection with external devices such as monitors, storage, and peripherals for daily work and study use.
- LIGHTWEIGHT DESIGN | ONLINE COMMUNICATION: Designed with a slim, portable profile, this laptop is easy to carry for school, commuting, and travel. A built-in 1MP front camera supports online classes, video meetings, remote communication, and everyday conferencing. The 3300mAh battery works with the low-power system design to support practical daily use, while thermal optimization helps maintain quieter operation during extended tasks.
Only element screenshots fail
Confirm the selector resolves to one current element, scroll it into view, wait for layout stability and check that it is not inside a stale frame or shadow-DOM context. A working page screenshot proves the session can render; it does not prove element coordinates are valid.
Reliability and cost considerations
For a test suite, determinism is usually more valuable than a particular operating system. Pin browser and driver versions, use a known viewport, preserve logs and artifacts, and separate rendering assertions from filesystem assertions. Keep retries limited and classify failures before retrying. A fresh session can recover from a crashed browser; it cannot repair a mismatched driver or unwritable directory.
There is no published prevalence statistic establishing that Windows fails more often than iOS for this exact comparison. The evidence supports a troubleshooting hypothesis based on platform, session and release behavior, not a measured cross-platform law.
Recommended Free Tools
Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server for developers. One GET request returns PNG, JPEG, WebP or PDF without maintaining a Selenium browser session:
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)
r.raise_for_status()
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}`);
if (!res.ok) throw new Error(`${res.status} ${res.statusText}`);
require('fs').writeFileSync('shot.webp', Buffer.from(await res.arrayBuffer()));
See the ScreenshotNeo documentation for request options. Before capture it accepts cookie or consent banners and removes more than 60 known consent platforms, newsletter popups and chat widgets; each cleanup step can be disabled. Bot checks, CAPTCHAs, blank pages, timeouts, failed loads and cache hits are not billed, and response headers identify the page verdict and whether the request was billed. Its MCP server lets Claude, Cursor and other MCP clients call take_screenshot, get_page_info and capture_pdf. You can also set viewport and device presets, full-page or CSS-selector capture, dark mode, retina scale, custom CSS/JavaScript, waits, request blocking, headers, cookies, user agent, timezone, geolocation, transparent backgrounds, resizing, caching, signed links, asynchronous webhooks and bulk capture.
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. Create a free ScreenshotNeo account to try it.
Frequently Asked Questions
Can an API screenshot replace Selenium in an interaction test?
No. Selenium remains the right tool when you must click, type, inspect DOM state or verify a user flow. An API is useful when the requirement is repeatable visual capture, PDFs or agent-driven screenshots without hosting a browser session.
Should I compare operating systems before comparing browser versions?
Compare the complete browser, driver, binding and automation-stack versions first. An OS comparison made with different versions or viewports cannot identify the cause.
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.

