// Frames/iFrames driver.switchTo().frame("frameId"); // By ID/Name driver.switchTo().frame(0); // By index driver.switchTo().frame(driver.findElement(By.tagName("iframe"))); driver.switchTo().defaultContent(); // Back to main
📸 Screenshots (Debug Gold!)
// Full page File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); FileUtils.copyFile(screenshot, new File("screenshot.png"));
// Element screenshot File elementShot = element.getScreenshotAs(OutputType.FILE);
🎭 Actions Class (Advanced Interactions)
Actions actions = new Actions(driver); actions.moveToElement(element).perform(); // Hover actions.contextClick(element).perform(); // Right-click actions.doubleClick(element).perform(); // Double-click actions.dragAndDrop(source, target).perform(); // Drag & drop
⚙️ JavaScript Executor
JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("window.scrollTo(0, 500);"); // Scroll js.executeScript("arguments[0].click();", element); // Force click String title = js.executeScript("return document.title;").toString();
☁️ Headless Mode (CI/CD)
ChromeOptions options = new ChromeOptions(); options.addArguments( "--headless=new", // New headless (2023+) "--window-size=1920,1080", "--disable-gpu", "--no-sandbox" ); WebDriver driver = new ChromeDriver(options);
✅ TestNG Assertions
Assert.assertEquals(actual, expected, "Message"); // Equality Assert.assertTrue(condition, "Must be true"); // Condition Assert.assertFalse(condition, "Must be false"); // Negative Assert.assertNotNull(element, "Element required");
⚠️ Common Exceptions & Fixes
Exception
Cause
Fix
NoSuchElement
Locator wrong
Verify selector in DevTools
StaleElement
DOM refresh
Re-locate after page change
Timeout
Element slow
Explicit Wait > Implicit
ElementNotInteractable
Hidden/Disabled
js.click() or scroll into view
🎯 Pro Tips for SDETs
Always use Explicit Waits over Thread.sleep()
Prefer CSS selectors over XPath (10x faster)
UseWebDriverManager – no manual driver downloads:javaWebDriverManager.chromedriver().setup(); WebDriver driver = new ChromeDriver();
Page Object Model – never use raw locators in tests
Screenshot on failure – TestNG @AfterMethod listener
Download Printable PDF: [Link to cheatsheet PDF]
Selenium WebDriver 2026 Cheat Sheet – Exhaustive
1. 🐳 WebDriver Setup & Management
Action
Java Code
Notes
ChromeDriver
WebDriver driver = new ChromeDriver();
Auto-managed via Selenium Manager
FirefoxDriver
WebDriver driver = new FirefoxDriver();
GeckoDriver auto-download
EdgeDriver
WebDriver driver = new EdgeDriver();
Edge WebDriver
Headless Chrome
ChromeOptions ops = new ChromeOptions(); ops.addArguments("--headless=new");
WebDriverManager – Never download drivers manually:javaWebDriverManager.chromedriver().setup();
Locator Priority: ID > CSS > XPath (10x speed difference)
Always Explicit Waits, Never Thread.sleep()
Screenshot on Failure – TestNG listener:java@AfterMethod public void tearDown(ITestResult result) { if(ITestResult.FAILURE == result.getStatus()) { // Take screenshot } }
Know someone who needs this? Share
QABash Media
QABash Media publishes practical technology insights to help engineers evolve beyond testing — covering AI, DevOps, system design, and quality practices used by high-performing tech teams.