Selenium Page Object Automation-Framework
Selenium page object automation framework using java & Maven & TestNG & Extent Report
Page Object Model (POM) : Design pattern.
The Page Object Design Pattern provides the following advantages:
- There is a clean separation between test code and page specific code such as locators (or their use if you’re using a UI Map) and layout.
- There is a single Object repository for the services or operations offered by the page rather than having these services scattered throughout the tests.
Example : HomePage,Login Page are object repository
Page Factory :
Page Factory is a class provided by Selenium WebDriver to support Page Object Design patterns. In Page Factory we have @FindBy annotation. The PageFactory.initElements method is used to initialize web elements.
@FindBy can accept tagName, partialLinkText, name, linkText, id, css, className, xpath
@FindBy(xpath = "xpath")
@FindBy(tagName = "tagName")
Example : BasePageClass is used to initialize web elements.
Repository : https://github.com/Ashishjublsdet/Selenium-PageObject-Java-AutomationFramework
Steps to Setup
1. Clone the application
git clone
2. Import project in any Editor(Eclispe/Intellij)
3. Run test.xml
Project Structure
Package & Classes Details
actionHelper : In this package common web functions is present
WebActionHelperMethods : All the common web functions is present in this class like click(),Scroll(),Enter() etc.
driverManager : In this package We are handling drivers initialization on the basis of browser
DriverManagerType : We have create an enum for Driver types and its definations
Webdrivers : In this class we are creating driver object on the Basis of DriverType like DriverManagerType.CHROME,DriverManagerType.firefoxdriver
listners : In this package we are using TestNg ITestlistner for creating report on the basis of Test result
TestListner :In order to listen to test events such as passed, failed, skipped, etc. we have TestListener class which implements ITestListener.
**onFinish:** This method is invoked after all tests methods gets executed.
**onTestStart:** This method is invoked before any test methods are invoked. This can be used to indicate that the particular test method has been started.
**onTestSkipped:** This method is invoked when each test method is skipped. This can be used to indicate that the particular test method has been skipped.
**onTestSuccess:** This method is invoked when any test method succeeds. This can be used to indicate that the particular test method has successfully finished its execution.
**onTestFailure:** This method is invoked when any test method fails. This can be used to indicate that the particular test method has failed. You can create an event for taking a screenshot which will show where the test has been failed.
reportManager : In this package we are using Extent report for reporting testCases
ExtentManager :In this class we are using Extent api and initialization of Extent object
Pages : In this package all the pages of application is present.
BasePageClass :In this class we have initialize all the page classes using PagePafctory conecepts(PageFactory.initElements)
HomePage,Login Page :In this class we have all the locators and associated methods.
TestCases : In this package all the TestCases is present.
BaseTest :In this class we have initialize drivers and all the pages.
Comments
Post a Comment