Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Clear out junk files and repair common Windows errors3Scan for outdated or missing drivers - takes under a minuteSelenium can test whether a link works as part of a real browser journey, but it is usually the wrong tool for checking every link across a site. For a user-flow test, follow the link and assert that the destination is usable; for a site-wide inventory, use an HTTP-based crawler. Selenium’s guidance specifically discourages link spidering with WebDriver because launching browsers and traversing the DOM adds overhead, and points to tools such as curl or BeautifulSoup instead.
Choose the right kind of link test
“Broken link” can mean two different things: a destination fails when a user follows a link, or a site-wide scan finds links whose targets do not respond as expected. Those goals call for different tests.
| Approach | Best for | What it tells you | Trade-off |
|---|---|---|---|
| Selenium WebDriver | Testing a user journey through the browser | Whether the relevant page and interaction work from a user’s perspective | Browser startup and DOM interaction make it a poor fit for spidering a large set of links |
| HTTP or crawler workflow | Building a site-wide link inventory | Whether discovered target URLs respond to requests according to your checking rules | Does not, by itself, validate the rendered browser experience or links only created by client-side behavior |
Selenium describes WebDriver as a way to drive a browser natively and represent user interaction. Its link-spidering guidance advises against using it to crawl links and suggests curl or BeautifulSoup for that job. These are different coverage goals, not competing ways to measure the same thing.
Test a link as part of a Selenium user journey
For a functional test, open the page that contains the link, interact with it as a user would, and verify the destination’s expected content. A destination that renders an error page is a failure even if the browser successfully navigated to it. Selenium’s guidance on HTTP response codes recommends checking the error page’s title or a reliable element such as its H1 for functional tests, rather than treating status-code inspection as the primary assertion.
#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.
Python example
This example uses Selenium’s Python bindings and an explicit wait for a destination heading. Replace the URLs and heading text with values from your application. It checks one user journey and does not crawl every link.
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
SOURCE_URL = "https://example.com/help"
EXPECTED_DESTINATION = "https://example.com/help/account"
EXPECTED_HEADING = "Account help"
options = webdriver.ChromeOptions()
options.add_argument("--headless=new")
driver = webdriver.Chrome(options=options)
try:
driver.get(SOURCE_URL)
# Prefer a stable locator for the specific link under test.
link = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.CSS_SELECTOR, "a[href='/help/account']"))
)
link.click()
WebDriverWait(driver, 10).until(EC.url_to_be(EXPECTED_DESTINATION))
heading = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.TAG_NAME, "h1"))
)
assert heading.text.strip() == EXPECTED_HEADING, (
f"Unexpected destination heading: {heading.text!r}"
)
finally:
driver.quit()
The URL assertion confirms that the click reached the intended destination; the heading assertion checks that the page is the expected one rather than an error page or an unrelated redirect. Use a stable test attribute or a more specific CSS selector if the page contains multiple matching links. Selenium’s element locators and wait patterns are documented in its waiting strategies guide.
Check an error page when that is the failure mode
If your application intentionally displays a branded error page, assert on its title or a dependable element, such as an H1 with known error text. This verifies the experience presented to the user. It does not prove which HTTP status code the server returned: browsers can display an error page after redirects or application-level routing, and the visible page alone is not a reliable status-code report.
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.
Wait for links created by JavaScript
A browser’s initial document readiness does not guarantee that JavaScript-driven updates have completed. If a script adds or changes links after page load, locate the link or destination content with an explicit wait, as in the example, rather than sleeping for an assumed fixed duration or querying immediately after get(). Choose a condition tied to the expected outcome—element present, visible, clickable, or URL changed—so a slow page has time to finish while a fast one does not incur an unnecessary fixed delay.
If the expected link never appears, check whether the page requires a user action, data fetch, or consent choice before rendering it. The test should reproduce the relevant user path and wait for the condition that path is supposed to create.
Use a crawler for a site-wide link inventory
To find broken targets across many pages, use an HTTP or crawler workflow rather than opening a browser for each URL. Selenium’s documentation names curl and BeautifulSoup as alternatives to browser-based spidering. At a high level, a crawler should collect links from the pages in scope, normalize and de-duplicate target URLs, request each target, and report outcomes using rules appropriate to the site.
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.
- Decide which pages and URL types are in scope, including whether to follow external links.
- Normalize URLs before de-duplication, while preserving meaningful query strings and fragments where relevant.
- Define which outcomes count as failures for your site. Redirects, authentication requirements, rate limits, and server errors may need different treatment.
- Keep a record of the source page and target URL so a reported failure can be traced and fixed.
- Remember that an HTTP crawl can miss links created only after client-side JavaScript runs; use browser tests for those user-visible behaviors.
The precise status handling and crawl policy are implementation choices: a link checker must decide how to handle redirects, access controls, and transient failures. The Selenium guidance supports using a non-browser approach for spidering; it does not prescribe one universal crawler policy.
When you need browser network details
If a user-flow test must capture HTTP response codes, Selenium documents a proxy as an advanced option and notes that browser support for exposing response codes varies. This is separate from asserting that a destination page looks correct: it adds network-observation setup and should be used only when the status code itself is required by the test.
WebDriver BiDi can stream browser events, including network requests, console messages, and JavaScript errors, as described in Selenium’s WebDriver documentation. That is useful observability, but it is not a documented one-step recipe for crawling every link or a guarantee that the same events are available in every browser and setup. Do not treat it as a substitute for a dedicated site-wide crawler.
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
Troubleshoot failed link tests
- The link cannot be found: It may be rendered asynchronously, hidden until an interaction, or located by a selector that no longer matches. Wait for the expected state and verify the locator against the current page.
- The click times out: The element may not yet be clickable or may be obstructed. Wait for clickability and check whether an overlay or consent dialog is part of the actual user flow.
- The URL changes but the assertion fails: The destination may redirect, or the expected URL may not account for canonicalization or a trailing slash. Check the final browser URL and assert on the destination behavior that matters.
- The destination loads but the test reports failure: The expected heading or title may have changed, or the page may have rendered an application error. Inspect the visible page and choose a stable, meaningful assertion.
- Failures differ between runs or browsers: Synchronization problems and browser-driver issues can both cause confusing failures. Selenium’s troubleshooting guidance points to both possibilities; isolate the issue by checking waits and, when appropriate, testing across browsers.
Or skip the browser setup
For a clean screenshot of a URL as part of a developer workflow, ScreenshotNeo is a website screenshot API and MCP server. It is not a broken-link crawler and does not replace Selenium’s user-flow assertions or a site-wide HTTP checker. A single GET can return a screenshot or PDF; its cleanup steps accept cookie/consent banners and remove more than 60 known consent platforms, newsletter popups, and chat widgets, and each step can be disabled.
For example, this cURL request captures a page to WebP:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp
See the ScreenshotNeo API documentation for request options. Bot checks and CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed; responses identify the page verdict and billing status in headers. Its MCP server provides take_screenshot, get_page_info, and capture_pdf tools for AI agents. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000.
Sign up free for ScreenshotNeo to get 1,000 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.
Frequently Asked Questions
Can Selenium check whether a link is broken without clicking it?
It can inspect a link in the rendered page, but that alone does not establish that the destination works. For a user-facing test, follow the link and validate the resulting page; for many destinations, use an HTTP crawler.
Does a successful page load mean the destination returned a successful HTTP status?
No. A visible page assertion checks the browser experience, not necessarily the underlying HTTP response code. Use an appropriate network-observation approach if the status itself is required.
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.
Free tools Windows power users keep installed
One-click scans. No signup required.

