Selenium with Python 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: Python Programming for Selenium
- Download and Install Python
- Overview of Python
- Downloading Python from the official website
- Installing Python
- Setup Python Environment
- Setting up Python Path in Environment Variables
- Verifying Python Installation
- Introduction to pip (Python Package Installer)
- How to use PyCharm
- Installing PyCharm IDE
- Setting up a new project in PyCharm
- Navigating the PyCharm interface
- Basic Python Program
- Writing the first Python script
- Understanding the Python file structure
- Running the Python script
- Run a Python Program
- Running Python programs from the command line
- Running Python scripts in PyCharm
- Understanding Console Output
- Using the print() function
- Formatting console output
- Python Variables and Data Types
- Variable declaration and initialization
- Different data types (int, float, string, boolean)
- Type casting
- Python Operators
- Arithmetic operators
- Comparison operators
- Logical operators
- Assignment operators
- Conditional Statements
- if statement
- if-else statement
- elif statement
- Nested if statements
- Looping Statements
- for loop
- while loop
- Nested loops
- Loop control statements (break, continue, pass)
- Lists and Tuple
- Creating and accessing lists
- List methods
- Tuples and their characteristics
- Tuple operations
- String
- String declaration
- String methods and operations
- String formatting
- Dictionary and Set
- Creating and accessing dictionaries
- Dictionary methods
- Creating and accessing sets
- Set operations and methods
Module 3: Python Object Oriented Programming
- Classes and Objects in Python
- Defining a class
- Creating objects from a class
- Instance variables and methods
- Functions and Methods in Python
- Defining functions inside and outside of a class
- Calling methods
- Passing Parameters to Methods
- Positional arguments
- Keyword arguments
- Default parameters
- Python Constructor
- Understanding the __init__ method
- Creating constructors
- Constructor overloading with default arguments
- Method Overloading
- Concept of method overloading in Python
- Using default arguments for method overloading
- Constructor Overloading
- Simulating constructor overloading with default arguments
- Static Variables and Methods
- Defining static variables
- Defining static methods using @staticmethod decorator
- Python Inheritance
- Single inheritance
- Multiple inheritance
- Multilevel inheritance
- Hierarchical inheritance
- Method Overriding
- Concept of method overriding
- Using super() to call parent class methods
- Python Packages
- Creating and using packages
- Importing modules from packages
- Managing namespaces
- Exception Handling
- Understanding exceptions
- Try, except, else, and finally blocks
- Raising exceptions
- Custom exceptions
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 PyChamp
- 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, .to_left_of, .to_right_of, .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
- Page Load Time
- Navigation Methods
- Navigating Back & Forward
- Refreshing Page
- Browser Commands
- close() and quit()
- 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
- 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
- Working with Browser Windows
- Switching Between Browser Windows
- Handling Tabs and Windows
- 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
- 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
- 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
- Working with Cookies
- Managing Cookies 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
- 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
- Reading Properties File
Module-5: PyTest
- Introduction to PyTest
- Overview of PyTest
- Key Features and Benefits
- PyTest Installation
- Installing PyTest via pip
- Verifying the Installation
- PyTest Naming Conventions
- Standard Naming Conventions for Test Files and Test Functions
- Importance of Naming Conventions
- PyTest Test Case
- Writing Simple Test Cases
- Understanding Assertion Methods in PyTest
- PyTest Fixtures
- Introduction to Fixtures
- Creating and Using Fixtures
- Scope of Fixtures (Function, Class, Module, Session)
- How to Use Common Fixtures in Multiple Modules
- Sharing Fixtures Across Multiple Test Modules
- Using conftest.py for Common Fixtures
- Run All the Modules in a Package
- Running Tests from All Modules in a Package
- Configuring PyTest to Discover and Run Tests
- Run Specific Module from a Package
- Command to Run Specific Test Modules
- Use Cases for Running Specific Modules
- Run Specific Test Method from a Module
- Running Individual Test Methods
- Specifying Test Methods in the Command Line
- Grouping Tests
- Organizing Tests into Groups
- Using Markers to Group Tests
- Skipping Tests
- Skipping Tests Conditionally
- Using pytest.mark.skip and pytest.mark.skipif
- Ordering Tests
- Controlling the Order of Test Execution
- Using pytest-ordering Plugin
- Parallel Testing using PyTest xdist-plugin
- Introduction to Parallel Testing
- Installing and Using pytest-xdist for Parallel Execution
- Configuring Number of Parallel Processes
- Parameterization
- Parameterizing Tests for Different Input Data
- Using pytest.mark.parametrize for Test Cases
- Command Line Arguments
- Common Command Line Options
- Custom Command Line Arguments
- Structure Tests in a Test Class
- Organizing Tests in Classes
- Setup and Teardown Methods in Test Classes
- Return a Value from Fixture
- Returning Values from Fixtures
- Using the Return Value in Test Functions
- PyTest HTML Report Generation
- Generating HTML Reports
- Using pytest-html Plugin
- Customizing the HTML Report
Module-6: Extent Reports, Logging & Page Object Model Pattern
- Generating Extent Reports
- Python Logging module for Logging
- Page Object Model (POM) Pattern
- Creating Page Object Classes without Page Factory
- Creating Page Object Classes using Page Factory
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 New Project and add required plugins
- Creating Folder Structure
- Creating Page Objects and Object Repository
- Creating Utility files
- Generating Reports
- Generating Logs using python Logging module
- Creating Configuration Files
- Creating Automation Test Cases
- Creating Data-Driven Test Cases
- Creating Database Test Cases
- Executing Test Scripts
- 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: 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