Skip to main content

Protractor Page Object Model

Hi All, I would like to share my learning regarding Protractor Page Object Model (POM). Protractor is an end to end test framework used to automate Angular web applications.

In POM, for each web page there should be corresponding page class. Carrying out the task of "Finding the web elements and methods" will be done from the page class. This of course improves the maintainability and reusability of the code.

Here I will show a simple example without Page Object Model which I have written in Javascript using Protractor framework.

describe('Angular home page', function () {

    it('should add the String in todo list ', function () {
        browser.get('https://angularjs.org/');
        element.all(by.css("[placeholder='add new todo here']")).sendKeys("Add POM");
        element(by.css('input.btn-primary')).click();

        var getText = element.all(by.css('label.checkbox'));
        getText.get(2).getText().then(function (results) {
            expect(results).toEqual("Add POM");
        });
    });
});
To improve the code we will write the test script with Page Object Model, for that we should create a new page class to apart the web elements and the methods.

var HomePage = function () {

    var textField = element.all(by.css("[placeholder='add new todo here']"));
    var addButton = element(by.css('input.btn-primary'));
    var textResults= element.all(by.css('label.checkbox'));

    this.setText = function (text) {
        textField.sendKeys(text);
    };
    this.clickAddButton = function () {
        addButton.click();
    };
    this.getText=function () {
        return textResults;
    };
};
module.exports = new HomePage();

To run the test we will write a script to use the Page objects and the methods.
describe('Angular page', function () {
    it('should add the String in todo list ', function () {
        browser.get('https://angularjs.org/');

        var angularHomePage = require(protractor.basePath + '/e2e-tests/blog/angularPage.js');
        angularHomePage.setText("Add POM");
        angularHomePage.clickAddButton();

        var getText = angularHomePage.getText();
        getText.get(2).getText().then(function (results) {
            expect(results).toEqual("Add POM");
        });
    });
});

Now You are set to run the test script with Page Object Model, Which is useful when the test suite grows with addition of new test cases, Page Object classes can be used in any number of test scripts which uses the same set of elements defined in the respective page object class.


Comments

Popular posts from this blog

GitLab and Jenkins configuration through SSH

In my previous post I have mentioned how to integrate GitLab with Jenkins using username and password. Now we will learn how to configure Jenkins and GitLab using SSH connection. Login as Jenkins user sudo su - jenkins Run the following command to generate SSH key,  ssh - keygen Now it will create  a directory named .ssh if it doesn't exist, Press enter and re-enter when you are prompted to enter passphrase. thuvvareka : ~ jenkins$ ssh - keygen Generating public / private rsa key pair . Enter file in which to save the key ( / Users / Shared / Jenkins / . ssh / id_rsa ) : Created directory ' /Users/Shared/Jenkins/.ssh ' . Enter passphrase ( empty for no passphrase ) : Enter same passphrase again : Your identification has been saved in / Users / Shared / Jenkins / . ssh / id_rsa . Your public key has been saved in / Users / Shared / Jenkins / . ssh / id_rsa . pub . The key fingerprint is : SHA256 : O9APiAETUYC87e9T6k18SPFQxEN4R2gJbKG6JLOID64 jenkins@thu...

Mobile Test Automation using Appium and Android studio

In this article we will discuss about how to automate Mobile application using Appium Server and Android Studio. Appium supports both iOS and Android. Appium is HTTP server. It receives the commands from client, executes the command on Mobile device and send a HTTP response representing the result of the command execution. I am going to use Android studio to create a virtual emulator. And Selenium WebDriver will be used to write the Client. I would prefer to use the virtual emulator instead of using real device. In actual devices you may find difficulties to connect/detect it. Pre-requisites .apk file is required to install in Mobile device (Virtual emulator). Android Studio, Appium desktop server and intelliJ IDEA have to be installed. Virtual emulator This post guides you to create the Virtual emulator using Android Studio. Once you launch the emulator now It's time to install the mobile application which is going to be automated. Drag and drop the apk file ...

Katalon studio Execution Profiles

Hi Folks, I want to share my experience regarding the learning, My project manager asked me to find the best way to automate the web application for the regression/retest purpose. So I had a research on the tools and technologies regarding automation. So I found this :) In this post I would like to share my knowledge on Katalon Studio Profiles.  Let's have a quick idea regarding Katalon studio. Katalon studio is a free automation testing tool and supports the web and mobile environment, and built on top of the open-source automation frameworks Selenium, Appium with a specialized IDE. Pre requests - You can download Katalon studio from this link. I am using the latest version in order to avoid unnecessary errors. First, I will show how to record the Web application via Katalon studio. Find below mentioned test scenarios which are going to be recorded Launch the application (URL : http://demoaut.katalon.com/ ) Make an Appointment Login using provided credentials...