Page Object Model in Selenium With Page Factory
Last updated on 21st Sep 2020, Artciles, Blog
- Page Object Model, also known as POM is a design pattern in Selenium that creates an object repository for storing all web elements. It is useful in reducing code duplication and improves test case maintenance.
- In Page Object Model, consider each web page of an application as a class file. Each class file will contain only corresponding web page elements. Using these elements, testers can perform operations on the website under test.
Page Factory in Selenium
- Page factory is the way to implement page object models. It is an inbuilt concept for the Page object model but very optimized.
- One of the biggest benefits of Page Factory is AjaxElementLocatorFactory Class. It works on lazy loading concept, i.e. a timeout for web elements is assigned to the page object class with the help of AjaxElementLocatorFactory. Hence, when an operation is performed on an element, the wait for its visibility starts from that particular moment only. If the element is not found in the given time frame, then the test case execution will throw an exception.
Subscribe For Free Demo
Error: Contact form not found.
Creating a page object model with page factory in Selenium WebDriver
Here, we will consider one Gmail application to learn the implementation of the page object model with a page factory in Selenium WebDriver.
Let us look at the steps to be followed for implementing the page object model using the page factory concept.
Step 1:Create a test base class. Here, we implement waits, create an object of WebDriver, maximize bowser, launch URL, etc. in this example, we will focus on chrome browser and set the system property to launch the Chrome browser.
The programming code for the testbase.java class is given below.
Step 2 :Now create classes for Facebook Login Page, Facebook Home page to hold web elements and locators. Usually, we should create page objects for all pages in AUT.
For every page, we create a separate class with a constructor. Now, you should identify locators and store them in one class. It increases the reusability of locators for multiple methods whenever necessary. For any code changes in the UI, it makes the code maintenance easy and making changes to a particular page is simple. Here you should create Java files for both pages after the test base class to hold locators and their elements.
Step 3: As per the scenario, the script should work as follows:
- Launch the Chrome browser and open Facebook.com
- Enter the valid credentials and login to the Facebook home page.
- Verify the credentials and log out.
In the end, you need to create one testing.xml file. The page object model always helps you to develop faster with cleaner code tests.
Advantages of Page Object Model
- Helps with easy maintenance: POM is useful when there is a change in a UI element or there is a change in an action. An example would be if a drop down menu is changed to a radio button.
In this case, POM helps to identify the page or screen to be modified. As every screen will have different java files, this identification is necessary to make the required changes in the right files. This makes test cases easy to maintain and reduces errors.
- Helps with reusing code: As already discussed, all screens are independent. By using POM, one can use the test code for any one screen, and reuse it in another test case. There is no need to rewrite code, thus saving time and effort.
- Readability and Reliability of scripts: When all screens have independent java files, one can easily identify actions that will be performed on a particular screen by navigating through the java file. If a change must be made to a certain section of code, it can be efficiently done without affecting other files.
Difference Between Page Object Model and Page Factory in Selenium
Page Object Model | Page Factory |
Finding web elements using By | Finding web elements using @FindBy |
POM does not provide lazy initialization | Page Factory does provide lazy initialization |
Page Object Model is a design pattern | PageFactory is a class which provides implementation of Page Object Model design pattern |
In POM, one needs to initialize every page object individually | In PageFactory, all page objects are initialized by using the initElements() method |
Run the code in order to test the workings of Page Object Model and Page Factory. Since these are important Selenium functions, testers need to be able to use them with ease and accuracy for Selenium automation. This will help them streamline automation testing efforts and yield results quicker.
Are you looking training with Right Jobs?
Contact Us- Selenium Tutorial
- CSS Selectors in Selenium
- How to Handle Multiple Windows in Selenium?
- How to Download & Install Selenium Ide?
- Selenium Interview Questions and Answers
Related Articles
Popular Courses
- Jmeter Training
11025 Learners
- Appium Training
12022 Learners
- Loadrunner Online Training
11141 Learners
- What is Dimension Reduction? | Know the techniques
- Difference between Data Lake vs Data Warehouse: A Complete Guide For Beginners with Best Practices
- What is Dimension Reduction? | Know the techniques
- What does the Yield keyword do and How to use Yield in python ? [ OverView ]
- Agile Sprint Planning | Everything You Need to Know