Who Is This Course For?

This course is designed for manual testers looking to move into automation, freshers who want to build a career in QA, and anyone who wants to learn Selenium with Java from the ground up. You will work with the same tools and frameworks used in real software companies — and leave with a project-ready portfolio.

✅ Selenium WebDriver 4.x ✅ TestNG Framework ✅ Page Object Model ✅ Apache POI — Excel Integration ✅ Selenium Grid & Jenkins CI/CD ✅ Live Project Included

🚀 Your Learning Path

Every module builds on the previous — from first script to full automation framework.

1WebDriver & Locators
2Interactions & Waits
3POM & TestNG
4Framework & CI/CD
🏆Job-Ready!
MODULE 01  Environment Setup & Selenium WebDriver Introduction
💡 You set up your entire automation environment and write a working script that opens a browser — your first real step into automation.
Tools & Setup
  • Installing Java JDK, Eclipse IDE, and configuring environment variables
  • Creating a Maven project and understanding pom.xml structure
  • Adding Selenium WebDriver dependency via Maven Central
  • Setting up ChromeDriver, GeckoDriver (Firefox), and EdgeDriver
WebDriver Fundamentals
  • Understanding the Selenium architecture — how WebDriver communicates with browsers
  • Instantiating WebDriver for Chrome, Firefox, and Edge browsers
  • Writing and running your first automation script end-to-end
  • Understanding the difference between Selenium 3 and Selenium 4
MODULE 02  Browser Control & Navigation
💡 You control the browser exactly as a user would — navigate, resize, read page data — entirely through code.
WebDriver Browser Commands
  • driver.get() and driver.navigate().to() — loading URLs
  • navigate().back(), navigate().forward(), navigate().refresh()
  • driver.manage().window().maximize(), setSize(), setPosition()
  • driver.getTitle() and driver.getCurrentUrl() for page verification
  • driver.quit() vs driver.close() — when to use each
MODULE 03  Web Element Locator Strategies
💡 Locators are how your script finds elements on a page. Mastering all 8 strategies means you can automate any website, no matter how it is built.
All 8 Locator Types
  • By.id — fastest and most reliable when available
  • By.name — using the HTML name attribute
  • By.className — single CSS class targeting
  • By.tagName — selecting by HTML element type
  • By.linkText — exact anchor text matching
  • By.partialLinkText — partial anchor text matching
  • By.cssSelector — powerful CSS-based targeting
  • By.xpath — most flexible, works anywhere in the DOM
Locator Best Practices
  • Choosing the right locator for stability and maintainability
  • Using browser DevTools to inspect and validate locators
  • Avoiding brittle locators that break with minor UI changes
MODULE 04  CSS Selector & XPath — In Depth
💡 CSS Selectors and XPath are the two most powerful locator types. Knowing both in depth allows you to find any element — even in the most complex web pages.
CSS Selector Techniques
  • Tag, ID, class, and attribute-based CSS selectors
  • Combining multiple attributes: input[type='text'][name='email']
  • Child and descendant selectors, sibling selectors
  • :nth-child(), ^=, $=, *= — starts-with, ends-with, contains patterns
XPath Techniques
  • Absolute XPath vs Relative XPath — differences and when to use each
  • XPath with attributes: //tag[@attribute='value']
  • contains(), starts-with(), text() functions
  • XPath axes: parent, child, following-sibling, preceding-sibling, ancestor
  • Grouping and index-based XPath: (//tag)[2]
  • AND / OR logical operators in XPath expressions
MODULE 05  WebElement Interactions
💡 Once you find an element, you need to interact with it — type, click, read values. These are the core actions every automation script performs.
WebElement Action Methods
  • sendKeys() — typing into text fields and input boxes
  • click() — clicking buttons, links, checkboxes, and radio buttons
  • clear() — clearing existing text from input fields
  • submit() — submitting forms directly
WebElement Property Methods
  • isSelected() — checking state of checkboxes and radio buttons
  • isEnabled() — verifying if a field or button is active
  • isDisplayed() — checking if an element is visible on screen
  • getText() — reading the visible text of any element
  • getAttribute() — reading any HTML attribute value
  • getCssValue() — reading applied CSS property values
MODULE 06  Actions Class & Screenshots
💡 Many modern websites require mouse gestures and keyboard combos that a simple click cannot handle. The Actions class and screenshot tools cover exactly these scenarios.
Actions Class — Advanced Mouse & Keyboard
  • moveToElement() — hovering over menus and tooltips
  • doubleClick() and contextClick() (right-click)
  • dragAndDrop() and dragAndDropBy()
  • Keyboard actions: keyDown(Keys.SHIFT), keyUp(), sendKeys(Keys.ENTER)
  • Scroll actions using scrollToElement() and scrollByAmount() (Selenium 4)
  • build().perform() — chaining and executing action sequences
Capturing Screenshots
  • TakesScreenshot interface — full-page screenshot on test failure
  • Element-level screenshot using WebElement.getScreenshotAs()
  • AShot library — for full-page scrolling screenshots
  • JavaScript Executor-based screenshot approach
MODULE 07  Handling Windows, Tabs & Frames
💡 Real applications open pop-ups, new tabs, and embed content in frames. Knowing how to switch between them keeps your scripts from getting stuck.
Window & Tab Handling
  • driver.getWindowHandle() — capturing the current window reference
  • driver.getWindowHandles() — getting all open window/tab references
  • driver.switchTo().window(handle) — switching between windows and tabs
  • Opening a new tab using Selenium 4's newWindow(WindowType.TAB)
  • Closing child windows and returning to the parent window
Frame & Alert Handling
  • driver.switchTo().frame() — switching by index, name, or WebElement
  • driver.switchTo().defaultContent() — returning to the main page
  • driver.switchTo().alert() — handling JavaScript alerts and confirms
  • alert.accept(), alert.dismiss(), and alert.sendKeys()
MODULE 08  Handling Dropdowns & Multiple Elements
💡 Dropdowns and lists of elements appear in almost every real application. These tools give you precise control over selecting values and working with element collections.
Select Class — Dropdown Handling
  • Importing and using the Select class from Selenium support
  • selectByVisibleText(), selectByValue(), selectByIndex()
  • getOptions(), getAllSelectedOptions(), getFirstSelectedOption()
  • Handling multi-select dropdowns with deselectAll()
Working with Multiple Elements
  • driver.findElements() — returning a List<WebElement>
  • Iterating over element lists to validate data or perform bulk actions
  • Counting elements, checking presence, filtering by state
MODULE 09  Synchronization & Wait Strategies
💡 Timing issues cause most automation failures. Proper synchronization makes your scripts reliable — even on slow networks or dynamic pages that load asynchronously.
Wait Types
  • Thread.sleep() — static wait (why it should be avoided in real scripts)
  • driver.manage().timeouts().implicitlyWait() — global element search timeout
  • WebDriverWait with ExpectedConditions — explicit conditional waits
  • Key conditions: visibilityOfElementLocated, elementToBeClickable, textToBePresentInElement, alertIsPresent
  • FluentWait — polling interval, custom timeout, ignoring exceptions
  • Choosing the right wait strategy for different application behaviours
MODULE 10  Page Object Model (POM) Design Pattern
💡 POM is the industry-standard way to organise automation code. It separates locators from test logic — making scripts easier to maintain when the UI changes.
POM Architecture
  • Why POM exists — separation of page logic from test logic
  • Creating Page classes with locators and action methods
  • @FindBy annotation — declaring locators declaratively
  • PageFactory.initElements(driver, this) — initialising page elements
  • Structuring a multi-page project: LoginPage, HomePage, CartPage, etc.
Common Issues & Fixes
  • Understanding and handling StaleElementReferenceException
  • Lazy initialisation vs eager initialisation of page elements
  • Reusing page objects across multiple test classes
MODULE 11  TestNG Framework & Assertions
💡 TestNG is the test management backbone of most Selenium projects. It controls the order, grouping, and reporting of your tests — making your suite production-quality.
TestNG Annotations & Configuration
  • Core annotations: @Test, @BeforeMethod, @AfterMethod, @BeforeClass, @AfterClass, @BeforeSuite, @AfterSuite
  • Test grouping with groups attribute — running smoke vs regression sets
  • Parameterisation using @Parameters and testng.xml configuration
  • Data-driven testing using @DataProvider
  • Parallel test execution — configuring thread count in testng.xml
  • Test priority, dependency (dependsOnMethods), and enabled flag
  • Custom logging using Reporter.log() inside test methods
Assertions
  • Hard assertions with Assert — test stops immediately on failure
  • Soft assertions with SoftAssert — collect all failures, report at end
  • Common assertion methods: assertEquals, assertTrue, assertFalse, assertNull, assertNotNull
  • Choosing between hard and soft assertions based on test scenario
MODULE 12  Data-Driven Testing with Apache POI
💡 Data-driven testing lets one script run across hundreds of input combinations stored in an Excel sheet — a standard practice in enterprise QA teams.
Apache POI — Excel Integration
  • Adding Apache POI dependency to pom.xml for .xlsx support
  • XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell — reading the Excel object hierarchy
  • Reading test data row-by-row from an Excel file into test scripts
  • Handling different cell types: String, Numeric, Boolean, Formula
  • Writing test results (Pass/Fail) back into the Excel sheet
  • Building a reusable ExcelUtils utility class for the framework
MODULE 13  Automation Framework, Selenium Grid & Jenkins CI/CD
💡 This module brings everything together into a production-level framework — the kind you will actually work with inside a software company.
Framework Design (AFW)
  • Recommended folder structure: src/main for utilities, src/test for test scripts
  • Building a BaseTest class — centralised driver initialisation and teardown
  • Integrating POM page classes, Excel utilities, and TestNG configuration
  • Maven Surefire Plugin — triggering test suites from command line
  • Version control with GitHub — pushing the project, branching basics
Selenium Grid & Cross-Browser Testing
  • Selenium Grid architecture — Hub and Node setup for distributed execution
  • RemoteWebDriver — running tests on remote machines and browsers
  • Cloud-based grid execution using SauceLabs
  • Configuring browser capabilities for parallel cross-browser runs
Jenkins CI/CD Integration
  • Installing and configuring Jenkins for a Java/Maven project
  • Creating a Jenkins job linked to a GitHub repository
  • Scheduling automated test runs using cron-style build triggers
  • Viewing TestNG reports and build history inside Jenkins dashboard
BONUS  Interview Preparation
💡 Knowing the technology is only half the battle. This section prepares you to explain and defend your knowledge confidently in any Automation QA interview.
What to Expect in Interviews

Scenario-Based Questions — Practise explaining how you would handle real situations: flaky tests, dynamic locators, synchronisation failures, framework design decisions.

Framework Walkthrough — Be ready to walk through the project you built in this course — folder structure, design decisions, and how each component connects.

Core Concepts Q&A — Frequently asked topics include POM vs non-POM, implicit vs explicit waits, hard vs soft assertions, TestNG vs JUnit, and Selenium 3 vs 4 differences.

Live Coding Rounds — Practice writing locators, handling alerts, and reading data from Excel during a live coding session — exactly as asked in real QA interviews.