org.openlmis.pageobjects.ReportPage.java Source code

Java tutorial

Introduction

Here is the source code for org.openlmis.pageobjects.ReportPage.java

Source

/*
 * This program is part of the OpenLMIS logistics management information system platform software.
 * Copyright  2013 VillageReach
 *
 * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
 * You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses. For additional information contact info@OpenLMIS.org.
 */

package org.openlmis.pageobjects;

import org.openlmis.UiUtils.TestWebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;

import static org.openqa.selenium.support.How.ID;

public class ReportPage extends Page {

    @FindBy(how = ID, using = "reportHeader")
    private static WebElement reportHeader = null;

    @FindBy(how = ID, using = "noReportsMessage")
    private static WebElement noReportsMessage = null;

    @FindBy(how = ID, using = "reportNameHeader")
    private static WebElement reportNameHeader = null;

    @FindBy(how = ID, using = "descriptionHeader")
    private static WebElement descriptionHeader = null;

    @FindBy(how = ID, using = "addNew")
    private static WebElement addNewButton = null;

    @FindBy(how = ID, using = "addNewHeader")
    private static WebElement addNewReportTitle = null;

    @FindBy(how = ID, using = "nameLabel")
    private static WebElement reportNameLabel = null;

    @FindBy(how = ID, using = "descriptionLabel")
    private static WebElement reportDescriptionLabel = null;

    @FindBy(how = ID, using = "uploadFileLabel")
    private static WebElement uploadFieldLabel = null;

    @FindBy(how = ID, using = "name")
    private static WebElement reportNameTextField = null;

    @FindBy(how = ID, using = "description")
    private static WebElement reportDescriptionTextField = null;

    @FindBy(how = ID, using = "file")
    private static WebElement uploadField = null;

    @FindBy(how = ID, using = "saveReport")
    private static WebElement saveButton = null;

    @FindBy(how = ID, using = "cancelButton")
    private static WebElement cancelButton = null;

    @FindBy(how = ID, using = "saveSuccessMsgDiv")
    private static WebElement saveSuccessMessage = null;

    @FindBy(how = ID, using = "error")
    private static WebElement saveErrorMessage = null;

    @FindBy(how = ID, using = "pdfButton")
    private static WebElement pdfButton = null;

    @FindBy(how = ID, using = "xlsButton")
    private static WebElement xlsButton = null;

    @FindBy(how = ID, using = "csvButton")
    private static WebElement csvButton = null;

    @FindBy(how = ID, using = "htmlButton")
    private static WebElement htmlButton = null;

    @FindBy(how = ID, using = "pdfTableButton")
    private static WebElement pdfTableButton = null;

    @FindBy(how = ID, using = "xlsTableButton")
    private static WebElement xlsTableButton = null;

    @FindBy(how = ID, using = "csvTableButton")
    private static WebElement csvTableButton = null;

    @FindBy(how = ID, using = "htmlTableButton")
    private static WebElement htmlTableButton = null;

    @FindBy(how = ID, using = "reportNameError")
    private static WebElement errorReportName = null;

    @FindBy(how = ID, using = "fileError")
    private static WebElement errorFile = null;

    @FindBy(how = ID, using = "reportName")
    private static WebElement reportName = null;

    @FindBy(how = How.XPATH, using = "//span[contains(text(),'Prev')]")
    private static WebElement prevCalender = null;

    @FindBy(how = How.XPATH, using = "//a[@class='ui-state-default' and contains(text(),'1')]")
    private static WebElement dateInCalender = null;

    public ReportPage(TestWebDriver driver) {
        super(driver);
        PageFactory.initElements(new AjaxElementLocatorFactory(TestWebDriver.getDriver(), 10), this);
        testWebDriver.setImplicitWait(10);
    }

    public String getReportHeader() {
        testWebDriver.waitForElementToAppear(reportHeader);
        return reportHeader.getText();
    }

    public String getReportNameHeader() {
        testWebDriver.waitForElementToAppear(reportNameHeader);
        return reportNameHeader.getText();
    }

    public String getDescriptionHeader() {
        testWebDriver.waitForElementToAppear(descriptionHeader);
        return descriptionHeader.getText();
    }

    public String getNameLabel() {
        testWebDriver.waitForElementToAppear(reportNameLabel);
        return reportNameLabel.getText();
    }

    public String getDescriptionLabel() {
        testWebDriver.waitForElementToAppear(reportDescriptionLabel);
        return reportDescriptionLabel.getText();
    }

    public String getUploadFileLabel() {
        testWebDriver.waitForElementToAppear(uploadFieldLabel);
        return uploadFieldLabel.getText();
    }

    public void clickAddNewButton() {
        testWebDriver.sleep(1000);
        testWebDriver.waitForElementToAppear(addNewButton);
        addNewButton.click();
        testWebDriver.waitForElementToAppear(addNewReportTitle);
    }

    public void enterReportName(String reportName) {
        testWebDriver.waitForElementToAppear(reportNameTextField);
        sendKeys(reportNameTextField, reportName);
    }

    public void enterReportDescription(String reportName) {
        testWebDriver.waitForElementToAppear(reportDescriptionTextField);
        sendKeys(reportDescriptionTextField, reportName);
    }

    public void uploadFile(String fileName) {
        String uploadFilePath;
        uploadFilePath = this.getClass().getClassLoader().getResource(fileName).getFile();
        sendKeys(uploadField, uploadFilePath);
    }

    public void clickSaveButton() {
        testWebDriver.waitForElementToAppear(saveButton);
        saveButton.click();
    }

    public void clickCancelButton() {
        testWebDriver.waitForElementToAppear(cancelButton);
        cancelButton.click();
    }

    public boolean isSaveButtonDisplayed() {
        testWebDriver.waitForElementToAppear(saveButton);
        return saveButton.isDisplayed();
    }

    public boolean isCancelButtonDisplayed() {
        testWebDriver.waitForElementToAppear(cancelButton);
        return cancelButton.isDisplayed();
    }

    public boolean isPDFLinkDisplayed() {
        testWebDriver.waitForElementToAppear(pdfButton);
        return pdfButton.isDisplayed();
    }

    public boolean isHTMLLinkDisplayed() {
        testWebDriver.waitForElementToAppear(htmlButton);
        return htmlButton.isDisplayed();
    }

    public boolean isCSVLinkDisplayed() {
        testWebDriver.waitForElementToAppear(csvButton);
        return csvButton.isDisplayed();
    }

    public boolean isXLSLinkDisplayed() {
        testWebDriver.waitForElementToAppear(xlsButton);
        return xlsButton.isDisplayed();
    }

    public boolean isPDFTableLinkDisplayed() {
        testWebDriver.waitForElementToAppear(pdfTableButton);
        return pdfTableButton.isDisplayed();
    }

    public boolean isHTMLTableLinkDisplayed() {
        testWebDriver.waitForElementToAppear(htmlTableButton);
        return htmlTableButton.isDisplayed();
    }

    public boolean isCSVTableLinkDisplayed() {
        testWebDriver.waitForElementToAppear(csvTableButton);
        return csvTableButton.isDisplayed();
    }

    public boolean isXLSTableLinkDisplayed() {
        testWebDriver.waitForElementToAppear(xlsTableButton);
        return xlsTableButton.isDisplayed();
    }

    public String getSaveSuccessMessage() {
        testWebDriver.waitForElementToAppear(saveSuccessMessage);
        return saveSuccessMessage.getText();
    }

    public String getSaveErrorMessage() {
        testWebDriver.waitForElementToAppear(saveErrorMessage);
        return saveErrorMessage.getText();
    }

    public String getErrorReportNameMessage() {
        testWebDriver.waitForElementToAppear(errorReportName);
        return errorReportName.getText();
    }

    public String getErrorFileMessage() {
        testWebDriver.waitForElementToAppear(errorFile);
        return errorFile.getText();
    }

    public String getReportName(int reportIndex) {
        WebElement element = testWebDriver.getElementById("reportName" + (reportIndex - 1));
        testWebDriver.waitForElementToAppear(element);
        return element.getText().trim();
    }

    public String getNoReportsMessage() {
        testWebDriver.waitForElementToAppear(noReportsMessage);
        return noReportsMessage.getText();
    }

    public String getReportDescription(int reportIndex) {
        WebElement element = testWebDriver.getElementById("reportDescription" + (reportIndex - 1));
        testWebDriver.waitForElementToAppear(element);
        return element.getText().trim();
    }

    public void clickReport(int reportIndex) {
        WebElement element = testWebDriver.getElementById("reportName" + (reportIndex - 1));
        testWebDriver.waitForElementToAppear(element);
        element.click();
    }

    public String getReportName() {
        testWebDriver.waitForElementToAppear(reportName);
        return reportName.getText();
    }

    public String getParameterDisplayName(String displayName) {
        WebElement element = testWebDriver.getElementById("displayName_" + displayName);
        testWebDriver.waitForElementToAppear(element);
        return element.getText().trim();
    }

    public String getParameterDescription(String displayName) {
        WebElement element = testWebDriver.getElementById("description_" + displayName);
        testWebDriver.waitForElementToAppear(element);
        return element.getText().trim();
    }

    public String getParameterDate(String displayName) {
        WebElement element = testWebDriver.getElementById("date_" + displayName);
        testWebDriver.waitForElementToAppear(element);
        return element.getAttribute("value");
    }

    public boolean isParameterTrueOptionSelected(String displayName) {
        WebElement element = testWebDriver.getElementById("true_" + displayName);
        testWebDriver.waitForElementToAppear(element);
        return element.isSelected();
    }

    public boolean isParameterFalseOptionSelected(String displayName) {
        WebElement element = testWebDriver.getElementById("false_" + displayName);
        testWebDriver.waitForElementToAppear(element);
        return element.isSelected();
    }

    public String getParameterString(String displayName) {
        WebElement element = testWebDriver.getElementById("string_" + displayName);
        testWebDriver.waitForElementToAppear(element);
        return element.getAttribute("value");
    }

    public String getParameterInt(String displayName) {
        WebElement element = testWebDriver.getElementById("integer_" + displayName);
        testWebDriver.waitForElementToAppear(element);
        return element.getAttribute("value");
    }

    public String getParameterFloat(String displayName) {
        WebElement element = testWebDriver.getElementById("float_" + displayName);
        testWebDriver.waitForElementToAppear(element);
        return element.getAttribute("value");
    }

    public String getUnSupportedDataTypeText(String displayName) {
        WebElement element = testWebDriver.getElementById("unSupportedDataType_" + displayName);
        testWebDriver.waitForElementToAppear(element);
        return element.getText();
    }

    public void selectParameterDate(String displayName) {
        WebElement element = testWebDriver.getElementById("date_" + displayName);
        testWebDriver.waitForElementToAppear(element);
        testWebDriver.sleep(1500);
        element.click();
        testWebDriver.waitForElementToAppear(prevCalender);
        prevCalender.click();
        testWebDriver.waitForElementToAppear(dateInCalender);
        dateInCalender.click();
        testWebDriver.sleep(500);
    }

    public void selectParameterFalseOption(String displayName) {
        WebElement element = testWebDriver.getElementById("false_" + displayName);
        testWebDriver.waitForElementToAppear(element);
        element.click();
    }

    public void enterStringParameterInput(String displayName, String input) {
        WebElement element = testWebDriver.getElementById("string_" + displayName);
        testWebDriver.waitForElementToAppear(element);
        sendKeys(element, input);
    }

    public void enterIntParameterInput(String displayName, String input) {
        WebElement element = testWebDriver.getElementById("integer_" + displayName);
        testWebDriver.waitForElementToAppear(element);
        sendKeys(element, input);
    }

    public void enterFloatParameterInput(String displayName, String input) {
        WebElement element = testWebDriver.getElementById("float_" + displayName);
        testWebDriver.waitForElementToAppear(element);
        sendKeys(element, input);
    }

    public void clickCsvLink() {
        testWebDriver.waitForElementToAppear(csvButton);
        csvButton.click();
    }

    public void clickCsvTableLink() {
        testWebDriver.waitForElementToAppear(csvTableButton);
        csvTableButton.click();
    }
}