Driver FixRecommendedSound, Wi-Fi or graphics acting up? Check drivers firstFind missing or outdated drivers fast.Check DriversOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PC×
Skip to content
World desk7 min

How to Handle Errors and Exceptions in Selenium with Python

A practical guide to Selenium with Python exceptions: read the traceback, identify the failed page state, use explicit waits, and handle recoverable errors without hiding bugs.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
Elebase USB to USB C Adapter for iPhone 18 Pro Max,USBC Car Charger Adapter
  • 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
Anker USB-C Hub, 5-in-1 USB Hub for Laptops, 4K HDMI Multiport Adapter
  • 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
Sale
Anker USB C Hub, 7in1 Multi-Port USB Adapter, 4K@60Hz USBC to HDMI Splitter
  • 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
Sale
UGREEN USB to USB C Adapter Combo 4-Pack, 10Gbps USB C Converter Space Gray
  • 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
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

A practical troubleshooting sequence

  1. Read the traceback. Note the specific exception and exact WebDriver operation that raised it.
  2. 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.
  3. State the prerequisite for the next action. Decide whether presence, visibility, clickability, text, an alert, or staleness is the relevant condition.
  4. Wait for that condition. Use WebDriverWait(driver, timeout).until(condition) or until_not(condition), with a timeout appropriate to the operation.
  5. 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.
  6. 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-Verdict and X-Billed headers.
  • An MCP server exposes take_screenshot, get_page_info, and capture_pdf for 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Best Value
Anker USB C Hub, 5-in-1 USBC to HDMI Splitter with 4K Display
  • 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.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. Shenzhen desk3 min
    HONOR Expands Beyond Smartphones With Humanoid Robot RevealHONOR said it unveiled its first humanoid robot at MWC 2026 and named shopping assistance, workplace inspections, and supportive companionship as intended uses. Later Robotics D1 claims and a reported…
  2. Cupertino desk5 min
    Apple Unveils AirPods Max 2: The Upgrade That Should Have Happened Years AgoAirPods Max 2 adds H2-powered audio features and Apple claims up to 1.5× more effective ANC, but its design, Smart Case, and 20-hour battery rating are unchanged. Wired lossless audio…
  3. Cupertino desk4 min
    Apple’s OLED Touch MacBooks Are Coming—but the Dynamic Island Is the Real GambleApple has not announced an OLED touchscreen MacBook, but reports point to high-end models arriving in late 2026 or early 2027. The reported Mac Dynamic Island could be useful, but…
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.