Selenium with Java Course Contents
Module-1: Overview
on Automation & Selenium
- Introduction to Automation
- Challenges in Manual Testing
- Overcoming Challenges with Automation
- Importance of Programming in Automation
- Introduction to Selenium
- Selenium Components
- Advantages and Disadvantages of Selenium WebDriver
Module-2: Java Programming for Selenium
- Java and Eclipse Environment Setup
- Setting up Java Development Kit (JDK)
- Installing Eclipse IDE
- Configuring Java and Eclipse Environment
- How to Write Basic Java Program?
- Creating a Java Class
- Main Method in Java
- Writing the First Java Program
- Compiling and Running Java Programs
- Understanding Console Output
- Using System.out.println() for Output
- Printing Variables and Text to Console
- Java Variables and Data Types
- Declaring Variables in Java
- Primitive Data Types (int, float, double, char, boolean)
- Variable Naming Conventions
- Java Operators
- Arithmetic Operators
- Relational Operators
- Logical Operators
- Assignment Operators
- Increment and Decrement Operators
- Ternary Operators
- Conditional Statements
- If Statement
- If-Else Statement
- Switch-Case Statement
- Loops
- While Loop
- Do-While Loop
- For Loop
- Jumping Statements
- Using break Statement
- Using continue Statement
- Arrays - Single & Two Dimensional
- Declaring and Initializing Arrays
- Accessing Array Elements
- Single-Dimensional Arrays
- Two-Dimensional Arrays
- Object Type Array
- Coding Exercises on Arrays
- String Class
- Introduction to the String Class
- String Methods
- Common String Methods
- Coding Exercises on Strings
- Wrapper Classes
- Primitive Data Types vs Wrapper Classes
- Autoboxing and Unboxing
- Classes and Objects
- Introduction to Classes and Objects
- Creating Classes
- Declaring Object Instances
- Class Members: Fields and Methods
- Java Methods & Constructors
- Defining Methods
- Method Signatures
- Return Types
- Passing Parameters to Methods
- Passing Parameters
- Call by Value
- Call by Reference (Reference Passing)
- Java Constructor
- Constructor Basics
- Parameterized Constructors
- Default Constructors
- Polymorphism
- Introduction to Polymorphism
- Overloading Methods
- Method Overloading
- Overloading with Different Parameter Types
- Overloading with Different Number of Parameters
- Overloading Constructors
- Constructor Overloading
- Creating Constructors with Different Parameters
- Encapsulation
- Encapsulation Overview
- Setters and Getters
- Purpose of Setters and Getters
- Encapsulation with Setters and Getters
- this Keyword
- Understanding the this Keyword
- Using this to Differentiate Instance and Local Variables
- Static Variables and Methods
- Static Variables
- Static Methods
- Accessing Static Members
- Inheritance
- Basics of Inheritance
- Extending Classes
- Superclass and Subclass
- Types of Inheritance
- Single Inheritance
- Multiple Inheritance
- Multilevel Inheritance
- Hierarchical Inheritance
- Method Overriding
- Overriding Methods in Subclasses
- Use of @Override Annotation
- super Keyword
- Using super to Access Superclass Members
- Invoking Superclass Methods
- final Keyword
- Final Variables
- Final Methods
- Final Classes
- Abstract Class
- Abstract Class Overview
- Abstract Methods
- Creating Abstract Classes
- Java Interface
- Introduction to Interfaces
- Implementing Interfaces
- Multiple Interface Implementation
- Java Packages
- Organizing Code with Packages
- Creating and Using Packages
- Access Modifiers
- Public, Private, Protected, Default Access Modifiers
- Access Modifier Scope
- Data Conversion Functions
- Converting Data Types
- Casting - Up Casting and Down casting
- Reading Input from Keyboard
- Using Scanner Class for Input
- Exception Handling
- Introduction to Exception Handling
- Try, Catch, Finally Blocks
- Types of Exceptions
- Java Collections
- Overview of Java Collections Framework
- Lists, Sets, Maps
- Iterators
- Collections Methods
- File Handling
- Handle text files
- Handle properties files
Module-4: Selenium WebDriver (Latest Version)
- Introduction to WebDriver and Architecture
- Overview of Selenium WebDriver
- Architecture of Selenium WebDriver
- Environment Setup & WebDriver Configuration
- Setting up WebDriver in Eclipse
- Configuring WebDriver for Different Browsers
- How to Create Automated Test Case in WebDriver?
- Setting Up a Basic Test Case Structure
- Writing and Running Simple WebDriver Test Cases
- Execute Test Case on Multiple Browsers
- Cross-Browser Testing
- Running Tests on Different Browsers
- Understanding HTML Tags and Attributes
- HTML Basics for Selenium Testers
- Locating Elements Using HTML Tags and Attributes
- Basic Locators
- Name Locator
- ID Locator
- LinkText Locator
- PartialLinkText Locator
- Advanced Locators
- CSS Locators
- XPath Locators
- XPath Axes
- Relative Locators
- .above, .below, .toLeftOf, .toRightOf, .near
- How to Use SelectorsHub & Features of Selectors Hub
- Overview of SelectorsHub
- Features and Benefits
- WebDriver Methods
- Opening Page URL
- Verifying Page Title
- Getting Page Source
- Getting Page URL
- Conditional Methods
- Visibility of WebElements
- Enable/Disable Status of Web Elements
- Waits
- Implicit Waits
- Explicit Waits
- Fluent Waits
- Page Load Time
- Navigation Methods
- Navigating Back & Forward
- Refreshing Page
- Browser Commands
- close() and quit()
- getWindowHandle() and getWindowHandles()
- Working with Web Elements
- Handling Input Boxes
- Handling Checkboxes & Radio Buttons
- Handling Links
- Handling Alerts/Popups
- Handling Alert Boxes
- Handling Confirmation Boxes
- Handling Prompt Boxes
- Working with Browser Windows
- Switching Between Browser Windows
- Handling Tabs and Windows
- Handling Iframes & Inner Iframes
- Switching to Iframes
- Working with Nested Iframes
- Handling Drop Downs
- Select type Drop down
- Bootstrap Drop Downs
- Multi Select Drop Down
- Auto Suggest Drop Down
- Handling Static & Dynamic Web Tables
- Strategies for Handling Tables
- Handling Static Tables
- Handling Dynamic Tables
- Pagination Tables
- Handling Date Pickers
- Strategies for Handling Date Pickers
- Handle SVG & ShadowDOM Elements
- Handle Cookies
- Handle Broken Links
- Handling Mouse Actions
- Using Actions Class
- Right Click, Double Click, Mouse Over
- Drag and Drop Actions
- Handling Keyboard Actions and Shortcuts
- Using Actions Class for Keyboard Actions
- Working with JavascriptExecutor
- Executing JavaScript Code in Selenium
- Scrolling Web Page
- Scrolling Up and Down the Page
- Zoom In & Zoom Out, Maximize, Minimize Web Page
- Managing Browser Window Size
- Opening Links in New Tab
- Handling New Tabs
- Working with Tabs and Windows
- Switching Between Tabs and Windows
- Capturing Screenshots
- Taking Screenshots in Selenium
- Headless Browser Testing
- Overview of Headless Testing
- Advantages and Disadvantages
- SSL Certificate Handling
- Handling SSL Certificates
- Browser Settings with ChromeOptions
- Customizing Chrome Browser Settings
- Enable Extensions on Browser at Runtime
- Managing Browser Extensions
- Blocking Ads on WebPage at Runtime
- Blocking Ads Using WebDriver
- Run Tests in Incognito Mode
- Running Tests in Incognito/Private Mode
- How to Handle Upload Files (Single and Multiple)
- Uploading Files in Selenium
- Handling Broken Links
- What is Broken link?
- How to find Broken links in web page
- Handling shadowDOM, SVG Elements
- Strategies for Handling shadowDOM and SVG Elements
- Selenium WebDriver Exceptions
- Working with Excel Files Using Apache POI API
- Reading and Writing Excel Files
- Data-Driven Testing
- Strategies for Data-Driven Testing
- Implementing Data-Driven Tests in Selenium
- Selenium WebDriver Exceptions
Module-5: TestNG
- Introduction to TestNG and Advantages
- Overview of TestNG
- Advantages of TestNG over JUnit
- TestNG Features
- Configuring TestNG in Project
- Setting up TestNG in Eclipse or IntelliJ
- Configuring TestNG Dependencies in the Project
- Writing TestNG Test Cases
- Basics of Writing TestNG Test Cases
- Annotations in TestNG
- Prioritizing Tests
- Setting Test Case Priority
- Running Tests in Priority Order
- Understanding Testng.xml
- Structure of TestNG XML File
- Configuring Test Suites and Test Cases
- TestNG Report
- TestNG HTML Reports
- Viewing and Analyzing TestNG Reports
- TestNG Annotations
- @BeforeSuite, @AfterSuite
- @BeforeTest, @AfterTest
- @BeforeClass, @AfterClass
- @BeforeMethod, @AfterMethod
- @Test Annotation
- Types of Assertions (Hard and Soft Assertions)
- Using Hard Assertions in TestNG
- Using Soft Assertions in TestNG
- dependsOnMethods
- Defining Dependencies Between Test Methods
- Ensuring Test Methods Run in a Specific Order
- Skipping and Ignoring Tests
- Skipping Tests in TestNG
- Ignoring Tests in TestNG
- Grouping Tests
- Grouping Tests in TestNG
- Running Tests by Groups
- Parameterizing Tests (XML File, DataProviders)
- Parameterizing Tests Using TestNG XML File
- Parameterizing Tests Using DataProviders
- @DataProvider
- Understanding @DataProvider Annotation
- Providing Test Data to Test Methods
- Invocation Count
- Repeating Test Execution with Invocation Count
- Parallel Testing
- Running Tests in Parallel
- Configuring Parallel Execution in TestNG
- TestNG Listeners
- Overview of TestNG Listeners
- Implementing Listeners in TestNG
- Types of TestNG Listeners (e.g., ITestListener, IAnnotationTransformer)
- Generate Extent Reports using Listeners
Module-6: Page Object Model Pattern
- Generating Extent Reports
- Log4j2 for Logging
- Page Object Model (POM) Pattern
- Creating Page Object Classes without Page Factory
- Creating Page Object Classes using Page Factory
- @FindBy annotation
Module-7: Selenium Grid
- Introduction to Selenium Grid
- Setting Up Grid Environment (Stand Alone, Hub with Nodes)
- Running Selenium Tests on Grid
Module-8: Docker
- What is Docker
- What is Docker Image
- What is Docker Container
- How to create account on Docker Hub
- Download Images from Docker Hub
- Docker UI Application
- Selenium Grid Configuration on Docker Hub
- Run your test cases on Dockerized Selenium Grid
- Setup Infrastructure using Docker Compose yml
- Scale up the browsers at the run time
- Shut down the Docker Infrastructure
Module-9: Introduction to Automation Frameworks
- Introduction to Automation Frameworks
- Types of Frameworks
- Phases in Designing Framework
- Choosing Test Cases for Automation
Module-10: Hybrid Framework with POM (Page Object Model) – Project
- Creating Maven Project and update pom.xml with dependencies
- Creating Folder Structure
- Creating Page Objects and Object Repository
- Creating Utility files
- Generating Extent Reports
- Generating Allure Reports
- Generating Logs using Log4j2
- Setting Up Configuration Files
- Creating Automation Test Cases
- Creating Data-Driven Test Cases
- Creating Database Test Cases
- Executing Test Scripts using TestNG XML File
- Emailing Test Reports
- Executing Test Scripts through Command Line
- Executing Test Scripts using Batch File
- Executing Test Scripts on Selenium Grid
- Executing Script on Docker Container
Module-11: Cucumber BDD Framework
- Introduction to BDD and Cucumber
- Gherkin Language Keywords
- Feature Files
- Step Definitions
- TestRunner Class
- Data Tables and Scenario Outline
- Tags, Background
- Cucumber Hooks
- Cucumber Reports
- Cucumber Extent Reports
- Cucumber Allure Reports
Module-12: CI & CD Concepts( Git, Github & Jenkins)
- Version Control System Overview
- Git and GitHub
- Git Commands
- Continuous Integration (CI) and Continuous Delivery (CD)
- Jenkins Overview
- Maven Integration with Jenkins
- Running Selenium Tests through Jenkins
- Creating CI/CD Pipelines -Declarative & scripted
- Scheduling Jobs
- Cron patterns