Selenium WebDriver’s normal page-load strategy waits for the document’s readyState to become complete before a navigation command returns. That does not mean a JavaScript application has finished rendering the content your test needs. After navigation, use an explicit wait for the specific condition required by your next action, such as an element becoming visible.
What Selenium means by “page loaded”
A navigation command such as driver.get(url) waits according to the session’s page-load strategy. The default, normal, waits for the document readiness state complete. That threshold concerns the document and its resources; JavaScript can still update the page after navigation returns, so a dynamically rendered element may not yet exist or be ready for interaction. Selenium’s waiting-strategies documentation and its browser options documentation describe these distinct readiness concerns.
Choose a wait based on the next step in the test. If the test must click a button, wait for that button to be visible or clickable rather than guessing that the whole application has “finished.”
Use an explicit wait for the condition your test needs
Explicit waits poll a condition until it succeeds or the timeout expires. In Python, a visibility condition can be written like this:
#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.
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
url = "https://example.com"
driver.get(url)
submit = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.CSS_SELECTOR, "button[type='submit']"))
)
submit.click()
Replace the URL and selector with those for the page under test. The 10-second timeout is an example, not a universal recommendation; set it to suit the application and test environment. Selenium’s documentation also illustrates the pattern WebDriverWait(driver, timeout=2).until(lambda _: revealed.is_displayed()); that two-second value is likewise illustrative. See Selenium’s expected-conditions documentation for supported condition patterns.
For a custom condition, the function passed to until should return a truthy value when the required state is reached. For example, wait until a loading indicator disappears if that is the application state that makes the next action safe. Prefer a condition that reflects the test’s actual need over a generic delay.
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.
Choose the right waiting mechanism
| Mechanism | Scope and signal | What it does not guarantee |
|---|---|---|
| Page-load strategy | Controls how long navigation blocks: normal waits for complete, eager for interactive, and none does not block on a ready-state threshold. |
It does not prove that a particular dynamic element or application state is ready. |
| Implicit wait | Applies to element-location calls throughout the session; unsuccessful lookups wait up to the configured implicit timeout. The default is zero. | It does not wait for visibility or an application-specific condition. |
| Explicit wait | Polls one chosen condition, such as an element becoming visible, until it succeeds or times out. | It does not change the navigation threshold or automatically govern unrelated lookups. |
For most tests that need to interact with dynamic content, keep implicit wait at its default of zero and use explicit waits where needed. Selenium warns: “Do not mix implicit and explicit waits.” Combining them can lead to unpredictable wait durations. The Selenium Project explains the warning in its waiting-strategies documentation.
Adjust navigation blocking with page-load strategies
Set a page-load strategy when you want navigation to wait for a different document-readiness threshold. In Python, configure it in browser options before creating the driver:
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →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.
from selenium import webdriver
options = webdriver.ChromeOptions()
options.page_load_strategy = "eager" # "normal", "eager", or "none"
driver = webdriver.Chrome(options=options)
driver.get("https://example.com")
normal: waits forcompleteand is the default.eager: waits forinteractive; other resources may still be loading.none: does not block WebDriver on a ready-state threshold.
These settings can avoid waiting for resources a particular test does not need, but neither eager nor none makes an application’s dynamic content ready. Follow navigation with an explicit condition when the test depends on a specific element or state. Options and bindings can differ by Selenium version, so check the documentation that matches the installed version.
Keep the three timeout types separate
A WebDriver session has distinct timeouts for navigation, element lookup, and script execution. The Selenium browser-options documentation lists these defaults for a new session: page-load timeout 300,000 ms, implicit timeout 0 ms, and script timeout 30,000 ms. These are documented defaults, not recommended values for every test, and may change in later Selenium or WebDriver revisions. See the browser options documentation.
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
- Page-load timeout: limits how long navigation waits under the selected page-load strategy.
- Implicit timeout: limits the wait applied to element-location calls.
- Script timeout: limits execution of asynchronous scripts.
A timeout in one category does not replace a condition-based wait in another. Set the relevant timeout for the operation that is actually failing.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Common problems and fixes
- The next lookup fails immediately after navigation: the document may have reached its navigation threshold while the application is still rendering. Add an explicit wait for the element or state the next step needs.
- The element is found but cannot be interacted with: locating an element is not the same as waiting for it to be visible or otherwise ready. Use an appropriate explicit condition, such as visibility, before acting.
- A fixed sleep is sometimes too short and sometimes wastes time: a sleep always waits a predetermined duration without checking readiness. Replace it with a condition-based explicit wait.
- The wait takes longer than expected after mixing wait types: implicit and explicit waits can interact unpredictably. Avoid combining them; prefer explicit waits for the conditions the test depends on.
- Navigation returns early after changing to
eagerornone: those strategies intentionally use a lower or no ready-state blocking threshold. Add an explicit wait for the application condition required before continuing. - A wait expires despite the page appearing loaded: verify the selector, the condition, and whether the element is in the state your condition requires. A page-level ready state is not a substitute for checking the test’s target.
Or skip the browser setup
If the goal is a screenshot rather than a Selenium interaction test, ScreenshotNeo provides a one-request screenshot API. It removes known cookie and consent banners, newsletter popups, and chat widgets before capture; bot checks, blank pages, failed loads, timeouts, and cache hits are not billed. It also offers an MCP server for AI agents, and its free plan includes 1,000 screenshots per month without a card.
For example, with cURL:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
See the ScreenshotNeo API documentation for request options. Paid plans start at $5 for 3,000 screenshots. Sign up for the free plan: 1,000 screenshots a month, no card required.
Quick Recap
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.
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.

