Start with the exact exception and the command that raised it. In Selenium, a missing element, a stale element reference, an intercepted click, and a wait timeout point to different problems—and usually call for different fixes. For asynchronous pages, use an explicit wait for the state your next action needs instead of adding an arbitrary time.sleep().
Diagnose the exception before changing the script
Read the full traceback. Record the Selenium exception type, the WebDriver command that failed, and what the script expected the page to be doing at that point. The exception narrows the diagnosis; it does not, by itself, prove a single root cause.
For example, NoSuchElementException means Selenium could not find the element in the current context at that moment. The locator may be wrong, the page may not have reached the expected state, or the script may be looking in the wrong browsing context. A timeout means a command or wait did not finish within its allotted time; it is not automatically evidence that the timeout should be increased.
Use an explicit wait for the state the next action requires
Navigation finishing does not necessarily mean JavaScript-driven content is ready. The document’s readyState concerns assets defined in the HTML, while scripts may add or change elements later. Wait for the relevant element state instead of assuming that page load completion makes it available or interactable.
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 minuteWindows 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 reinstall#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
Choose the condition deliberately
| What the next step needs | Useful condition | What it establishes |
|---|---|---|
| Locate an element, with no interaction yet | presence_of_element_located |
The element is present in the DOM; it need not be visible. |
| Read or interact with a displayed element | visibility_of_element_located |
The element is present and visible. |
| Click an element | element_to_be_clickable |
The element is visible and enabled; an overlay can still interfere with the click. |
| Wait for a prior reference to be replaced or removed | staleness_of |
The old element reference is no longer attached to the DOM. |
| Continue after an alert appears | alert_is_present |
An alert is available to handle. |
| Wait for expected text | text_to_be_present_in_element |
The requested text is present in the target element. |
Selenium’s expected-conditions API also includes combinations such as all_of, any_of, and none_of. Choose a condition that represents the actual prerequisite; DOM presence alone does not establish visibility or clickability.
Python example: wait for a button before clicking
This example uses Selenium’s Python API and a condition-based wait. Replace the example URL and locator with those for your page.
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
URL = "https://example.com"
BUTTON = (By.CSS_SELECTOR, "button.submit")
driver = webdriver.Chrome()
try:
driver.get(URL)
wait = WebDriverWait(driver, 10)
button = wait.until(EC.element_to_be_clickable(BUTTON))
button.click()
except TimeoutException:
print(f"Timed out waiting for a clickable button: {BUTTON}")
raise
finally:
driver.quit()
Remove the leading space before driver = webdriver.Chrome() if copying this snippet: it should be aligned with try:. The wait timeout is in seconds. Selenium’s documented Python WebDriverWait default polling interval is 0.5 seconds, and its default ignored exception during polling is NoSuchElementException. These are API defaults, not guarantees about how quickly a particular page or browser responds. If the condition is not met within the configured timeout, the wait raises TimeoutException.
When a fixed sleep is appropriate
time.sleep(seconds) pauses for that fixed duration whether the page is ready immediately or still changing at the end of the pause. An explicit wait polls for a condition and proceeds when it succeeds, or times out if it does not. Prefer the explicit wait when the required state can be expressed as a condition. A sleep may be useful for a genuinely fixed delay that cannot be represented by a state condition, but it should not substitute for diagnosing why an element has not appeared.
Free tools Windows power users keep installed
One-click scans. No signup required.
Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
Common Selenium exceptions and what to check
| Exception | Meaning | Next diagnostic step |
|---|---|---|
NoSuchElementException |
The element could not be found. | Check the selector, the current page or browsing context, and whether the page has reached the required state. If it is expected to appear asynchronously, wait for its presence or the stronger state needed next. |
TimeoutException |
A command or wait did not complete within enough time. | Identify which command or wait timed out and which condition it was waiting for. Check the locator, page state, context, and expected transition before adjusting the timeout. |
StaleElementReferenceException |
The element reference is stale and no longer represents the current DOM element. | After the relevant DOM change, locate the element again. Do not keep using a reference captured before a page update. |
ElementClickInterceptedException |
Another element obscured the target when Selenium tried to click it. | Inspect for overlays or layout changes and wait for the intended click state. Repeating the same click without addressing the obstruction may fail again. |
ElementNotInteractableException |
The requested interaction cannot proceed in the element’s current state or paint order. | Check visibility and enabled state, and confirm that the selected element is the one the interaction should target. |
NoSuchWindowException |
The requested window target does not exist. | Check which window handles remain open and whether the script selected a valid handle. |
UnexpectedAlertPresentException |
An unexpected alert appeared. | Check whether the flow should trigger an alert; handle it when expected or correct the flow that caused it. |
SessionNotCreatedException |
A new WebDriver session could not be created. | Inspect browser and driver startup details and session configuration. The cause depends on the environment. |
Recover narrowly, and keep failures visible
Catch an exception only when the code has a defined, safe recovery for it. Put the handler around the operation expected to fail, rather than wrapping an entire test or workflow in a broad except Exception. Record useful context such as the operation and locator, preserve the traceback, and re-raise when there is no valid recovery. Selenium documents exception types; it does not prescribe one universal retry policy for applications.
Example: retry a lookup by waiting, not by looping blindly
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
locator = (By.ID, "status")
try:
status = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located(locator)
)
except TimeoutException:
logger.exception("Status element did not become visible: %s", locator)
raise
print(status.text)
This lets the wait perform the repeated condition check while preserving a meaningful timeout failure. Do not add ignored exception types merely to make the script continue: add one only when it is understood to be transient during this specific wait and there is a safe outcome if it persists.
Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
A practical troubleshooting sequence
- Read the traceback. Note the specific exception and exact WebDriver operation that raised it.
- For a missing element, verify the target. Check the selector, whether the element is in the current page or context, and whether dynamic content has reached the needed state.
- State the prerequisite for the next action. Decide whether presence, visibility, clickability, text, an alert, or staleness is the relevant condition.
- Wait for that condition. Use
WebDriverWait(driver, timeout).until(condition)oruntil_not(condition), with a timeout appropriate to the operation. - If it times out, investigate the assumption. Check the locator, page state, browsing context, and whether the expected transition occurred before simply extending the timeout.
- Handle only recoverable failures. Log context and continue only if the next action is safe; otherwise surface the failure.
Or skip the browser setup
If your actual goal is to capture a website screenshot rather than automate a browser interaction, ScreenshotNeo provides a screenshot API and MCP server. It is not a replacement for Selenium’s interaction and exception-handling workflow. One GET request can return an image or PDF; the following Python example saves a WebP screenshot. See the ScreenshotNeo API documentation for request options.
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)
- Cookie banners are accepted before capture, and 60+ known consent platforms, newsletter popups, and chat widgets can be removed; each step can be turned off.
- Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing; responses include
X-Page-VerdictandX-Billedheaders. - An MCP server exposes
take_screenshot,get_page_info, andcapture_pdffor AI agents and MCP clients. - The Free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots.
Sign up for 1,000 free screenshots a month with no card.
Best Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
Version note
The code uses Selenium’s Python WebDriver wait and expected-condition APIs. Selenium’s official API pages surfaced as version 4.50.0 in the source material for this article; check the documentation for the version installed in your environment if an API detail differs.
Frequently Asked Questions
Why can Selenium say a page is loaded while an element is still missing?
The document’s ready state does not guarantee that JavaScript-driven changes needed by your script have completed. Wait for the specific element state required by the next operation.
Should I ignore StaleElementReferenceException in every wait?
No. Reacquire the element after the DOM change that made the reference stale. Ignore an exception in a wait only when it is understood to be transient and the eventual outcome remains safe.
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.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →




