Selenium.
Browser automation with Selenium WebDriver — locators, waits, Page Object Model, grid, and cross-browser testing.
Beginner
Start here — no prior experience needed
Your First Selenium Test
Install Selenium 4, drive a real browser, and read the three exceptions you will meet in your first hour — with the driver lifecycle that stops leaking processes.
Locators: Finding Elements Reliably
The eight By strategies, when XPath earns its keep over CSS, Selenium 4's relative locators, and why a generated id makes a test that breaks next deploy.
Waits: Implicit, Explicit, and Why sleep Fails
Selenium does not wait for anything. Replace sleeps with WebDriverWait and expected conditions — and never mix implicit and explicit waits, which multiplies your timeouts.
Interacting with Elements and Forms
Type, click, select and upload — plus ActionChains for hover and drag, and what to do when a cookie banner intercepts your click.
Windows, Frames, and Alerts
Three contexts a locator cannot cross — new tabs, iframes and native dialogs — and the switch_to calls that move between them without losing your place.
Intermediate
For developers with core concepts down
The Page Object Model
Move locators out of tests and into objects that model behaviour — with component objects, page-returning navigation, and the mistakes that make a POM worse than none.
Flaky Tests: Staleness, Retries, and CI
Fix StaleElementReferenceException properly, find the five causes of tests that only fail in CI, and use retries as a signal rather than a cure.
Running Selenium Suites with pytest
Fixtures that pick a browser from the command line, parametrised cross-browser runs, parallel execution with xdist, and JUnit XML for CI.
Advanced
Production-grade patterns for experienced engineers
Selenium Grid and Remote WebDriver
Run the same suite against browsers on other machines — standalone and hub-node Grid in Docker, session capabilities, video recording, and sizing the pool.
CDP, BiDi, and Modern Selenium
Intercept network traffic, emulate devices and capture console errors — with Chrome DevTools Protocol today and WebDriver BiDi as the cross-browser replacement.