org.openlmis.pageobjects.UserPage.java Source code

Java tutorial

Introduction

Here is the source code for org.openlmis.pageobjects.UserPage.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.*;
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 java.util.List;

import static com.thoughtworks.selenium.SeleneseTestBase.assertFalse;
import static com.thoughtworks.selenium.SeleneseTestBase.assertTrue;
import static com.thoughtworks.selenium.SeleneseTestNgHelper.assertEquals;
import static org.openqa.selenium.support.How.ID;
import static org.openqa.selenium.support.How.XPATH;

public class UserPage extends FilterSearchPage {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    @FindBy(how = How.XPATH, using = "//form[@id='create-user']/div/div[1]/div[8]/div/ng-switch/span")
    private static WebElement verifiedLabel = null;

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

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

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

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

    @FindBy(how = How.XPATH, using = "(//input[@type='text'])[15]")
    private static WebElement roleInputFieldHomeFacility = null;

    @FindBy(how = How.XPATH, using = "//div[@class='select2-result-label']/span")
    private static WebElement rolesSelectField = null;

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

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

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

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

    @FindBy(how = How.XPATH, using = "(//input[@type='text'])[17]")
    private static WebElement rolesInputFieldSupervisoryRole = null;

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

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

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

    @FindBy(how = How.XPATH, using = "(//input[@type='text'])[19]")
    private static WebElement rolesInputFieldWarehouse = null;

    @FindBy(how = XPATH, using = "//div[@id='s2id_reportingRoles']/ul/li[@class='select2-search-field']/input")
    private static WebElement rolesInputFieldReporting = null;

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

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

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

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

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

    @FindBy(how = How.XPATH, using = "(//input[@type='text'])[21]")
    private static WebElement rolesInputFieldMDeliveryZone = null;

    @FindBy(how = How.XPATH, using = "(//input[@type='text'])[18]")
    private static WebElement rolesInputFieldDeliveryZone = null;

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

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

    @FindBy(how = XPATH, using = "//*[@id='s2id_adminRoles']/ul/li[@class='select2-search-field']/input")
    private static WebElement adminRolesInputField = null;

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

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

    @FindBy(how = How.XPATH, using = "//input[contains(text(),'Remove')]")
    private static WebElement removeButton = null;

    @FindBy(how = How.XPATH, using = "//div[6]/div[2]/ng-include/div/div[1]/div[2]/div[1]/div/label[@class='ng-binding']")
    private static WebElement addedDeliveryZoneLabel = null;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    public void searchUser(String user) {
        testWebDriver.waitForElementToAppear(searchUserTextField);
        sendKeys(searchUserTextField, user);
    }

    public void resetPassword(String newPassword, String confirmPassword) {
        testWebDriver.waitForElementToAppear(resetPasswordButton);
        resetPasswordButton.click();

        testWebDriver.waitForElementToAppear(newPasswordField);
        sendKeys(newPasswordField, newPassword);

        testWebDriver.waitForElementToAppear(confirmPasswordField);
        sendKeys(confirmPasswordField, confirmPassword);

        testWebDriver.waitForElementToBeEnabled(resetPasswordDone);
        resetPasswordDone.click();
    }

    public void enterUserDetails(String userName, String email, String firstName, String lastName) {
        testWebDriver.waitForElementToAppear(addNewButton);
        addNewButton.click();
        testWebDriver.waitForElementToAppear(userNameField);
        sendKeys(userNameField, userName);
        testWebDriver.waitForElementToAppear(emailField);
        sendKeys(emailField, email);
        testWebDriver.waitForElementToAppear(firstNameField);
        sendKeys(firstNameField, firstName);
        testWebDriver.waitForElementToAppear(lastNameField);
        sendKeys(lastNameField, lastName);
        testWebDriver.handleScroll();
        clickRestrictLoginNo();
        assertFalse(resetPasswordButton.isDisplayed());
        assertFalse(disableButton.isDisplayed());

        testWebDriver.waitForElementToAppear(saveButton);
        saveButton.click();
        testWebDriver.waitForElementToAppear(viewHereLink);
    }

    public String getSuccessMessage() {
        testWebDriver.waitForElementToAppear(successMessage);
        return successMessage.getText();
    }

    public void enterUserHomeFacility(String facilityCode) {
        if (clearFacility.isDisplayed()) {
            clearFacility.click();
        }
        testWebDriver.sleep(500);
        testWebDriver.handleScrollByPixels(0, 1600);
        testWebDriver.sleep(500);
        associatedFacilityField.click();
        searchFacility(facilityCode);
    }

    public void ExpandAll() {
        testWebDriver.waitForElementToAppear(expandAllOption);
        expandAllOption.click();
    }

    public void collapseAll() {
        testWebDriver.waitForElementToAppear(collapseAllOption);
        collapseAllOption.click();
    }

    public void clickRestrictLoginYes() {
        testWebDriver.waitForElementToAppear(restrictLoginYesOption);
        restrictLoginYesOption.click();
    }

    public void clickRestrictLoginNo() {
        testWebDriver.waitForElementToAppear(restrictLoginNoOption);
        restrictLoginNoOption.click();
    }

    public boolean isProgramsToSuperviseDisplayed() {
        try {
            testWebDriver.waitForElementToAppear(programsToSupervise);
        } catch (TimeoutException e) {
            return false;
        } catch (NoSuchElementException e) {
            return false;
        }
        return programsToSupervise.isDisplayed();
    }

    public boolean isProgramToDeliverDisplayed() {
        try {
            testWebDriver.waitForElementToAppear(programToDeliver);
        } catch (TimeoutException e) {
            return false;
        } catch (NoSuchElementException e) {
            return false;
        }
        return programToDeliver.isDisplayed();
    }

    public boolean isWarehouseToSelectDisplayed() {
        try {
            testWebDriver.waitForElementToAppear(warehouseToSelect);
        } catch (TimeoutException e) {
            return false;
        } catch (NoSuchElementException e) {
            return false;
        }
        return warehouseToSelect.isDisplayed();
    }

    public void enterMyFacilityAndMySupervisedFacilityData(String facilityCode, String program1, String node,
            String role, String roleType) {
        assertFalse(homeFacilityRolesAccordion.isDisplayed());
        if (!roleType.equals("ADMIN")) {
            enterUserHomeFacility(facilityCode);
            testWebDriver.waitForAjax();
            selectFacility(1);
            testWebDriver.waitForAjax();
            testWebDriver.scrollAndClick(homeFacilityRolesAccordion);
            testWebDriver.sleep(500);
            testWebDriver.scrollToElement(homeFacilityPrograms);
            testWebDriver.selectByVisibleText(homeFacilityPrograms, program1);
            testWebDriver.waitForElementToAppear(roleInputFieldHomeFacility);
            testWebDriver.scrollAndClick(roleInputFieldHomeFacility);
            sendKeys(roleInputFieldHomeFacility, role);
            testWebDriver.waitForElementToAppear(rolesSelectField);
            testWebDriver.scrollAndClick(rolesSelectField);
            testWebDriver.scrollAndClick(addHomeFacilityRolesButton);
            testWebDriver.waitForElementToAppear(supervisoryRolesAccordion);
            testWebDriver.scrollAndClick(supervisoryRolesAccordion);
            testWebDriver.sleep(500);
            testWebDriver.waitForElementToAppear(programsToSupervise);
            testWebDriver.selectByVisibleText(programsToSupervise, program1);
            testWebDriver.waitForElementToAppear(supervisoryNodeToSupervise);
            testWebDriver.selectByVisibleText(supervisoryNodeToSupervise, node);
            testWebDriver.sleep(1000);
            testWebDriver.handleScroll();
            testWebDriver.waitForElementToAppear(rolesInputFieldSupervisoryRole);
            testWebDriver.scrollAndClick(rolesInputFieldSupervisoryRole);
            sendKeys(rolesInputFieldSupervisoryRole, role);
            testWebDriver.waitForElementToAppear(rolesSelectField);
            testWebDriver.scrollAndClick(rolesSelectField);

            assertEquals(testWebDriver.getFirstSelectedOption(supervisoryNodeToSupervise).getText(), node);
            assertEquals(testWebDriver.getFirstSelectedOption(programsToSupervise).getText(), program1);
            testWebDriver.waitForElementToAppear(addSupervisoryRoleButton);
            testWebDriver.scrollAndClick(addSupervisoryRoleButton);

        } else {
            testWebDriver.handleScroll();
            testWebDriver.waitForElementToAppear(adminAndGeneralOperationsRolesAccordion);
            testWebDriver.scrollAndClick(adminAndGeneralOperationsRolesAccordion);
            testWebDriver.sleep(500);
            testWebDriver.waitForElementToAppear(adminRolesInputField);
            testWebDriver.scrollAndClick(adminRolesInputField);
            sendKeys(adminRolesInputField, role);
            testWebDriver.waitForElementToAppear(rolesSelectField);
            testWebDriver.scrollAndClick(rolesSelectField);
        }
    }

    public void verifyUserUpdated(String firstName, String lastName) {
        testWebDriver.sleep(1000);
        assertTrue(
                "User '" + firstName + " " + lastName
                        + "' has been successfully updated message is not getting displayed",
                successMessage.isDisplayed());
    }

    public void assignWarehouse(String warehouse, String role) {
        testWebDriver.waitForElementToAppear(orderFulfillmentRolesAccordion);
        orderFulfillmentRolesAccordion.click();
        testWebDriver.sleep(500);
        testWebDriver.waitForElementToAppear(warehouseToSelect);
        testWebDriver.selectByVisibleText(warehouseToSelect, warehouse);
        testWebDriver.waitForElementToAppear(rolesInputFieldWarehouse);
        rolesInputFieldWarehouse.click();
        rolesInputFieldWarehouse.clear();
        rolesInputFieldWarehouse.sendKeys(role);
        testWebDriver.waitForElementToAppear(rolesSelectField);
        rolesSelectField.click();
        assertEquals(testWebDriver.getFirstSelectedOption(warehouseToSelect).getText(), warehouse);
        testWebDriver.waitForElementToAppear(addWarehouseRoleButton);
        addWarehouseRoleButton.click();
        testWebDriver.sleep(1000);
        verifyWarehouseSelectedNotAvailable(warehouse);
        testWebDriver.waitForElementToAppear(orderFulfillmentRolesAccordion);
        orderFulfillmentRolesAccordion.click();
        testWebDriver.sleep(500);
    }

    public void assignReportingRole(String role) {
        testWebDriver.waitForElementToAppear(reportingRolesAccordion);
        reportingRolesAccordion.click();
        testWebDriver.sleep(500);
        testWebDriver.waitForElementToAppear(rolesInputFieldReporting);
        rolesInputFieldReporting.click();
        sendKeys(rolesInputFieldReporting, role);
        testWebDriver.waitForElementToAppear(rolesSelectField);
        rolesSelectField.click();
        testWebDriver.sleep(1000);
    }

    public void assignAdminRole(String role) {
        testWebDriver.waitForElementToAppear(adminAndGeneralOperationsRolesAccordion);
        testWebDriver.scrollAndClick(adminAndGeneralOperationsRolesAccordion);
        testWebDriver.sleep(500);
        testWebDriver.waitForElementToAppear(adminRolesInputField);
        testWebDriver.scrollAndClick(adminRolesInputField);
        sendKeys(adminRolesInputField, role);
        testWebDriver.waitForElementToAppear(rolesSelectField);
        rolesSelectField.click();
        testWebDriver.sleep(1000);
    }

    public void verifyMessage(String message) {
        testWebDriver.waitForElementToAppear(successMessage);
        assertEquals(successMessage.getText(), message);
    }

    public void enterDeliveryZoneData(String deliveryZoneCode, String program, String role) {
        testWebDriver.handleScroll();
        testWebDriver.getElementByXpath("//a[contains(text(),'Delivery zones')]").click();
        testWebDriver.waitForElementToAppear(zoneToDelivery);
        testWebDriver.selectByVisibleText(zoneToDelivery, deliveryZoneCode);
        testWebDriver.waitForElementToAppear(programToDeliver);
        testWebDriver.selectByVisibleText(programToDeliver, program);
        testWebDriver.waitForElementToAppear(rolesInputFieldMDeliveryZone);
        rolesInputFieldMDeliveryZone.click();
        rolesInputFieldMDeliveryZone.clear();
        rolesInputFieldMDeliveryZone.sendKeys(role);
        rolesInputFieldMDeliveryZone.sendKeys(Keys.RETURN);
        addDeliveryZoneRoleButton.click();
    }

    public void enterDeliveryZoneDataWithoutHomeAndSupervisoryRolesAssigned(String deliveryZoneCode, String program,
            String role) {
        testWebDriver.handleScroll();
        deliveryZonesAccordion.click();
        testWebDriver.sleep(500);
        testWebDriver.waitForElementToAppear(zoneToDelivery);
        testWebDriver.selectByVisibleText(zoneToDelivery, deliveryZoneCode);
        testWebDriver.waitForElementToAppear(programToDeliver);
        testWebDriver.selectByVisibleText(programToDeliver, program);
        testWebDriver.waitForElementToAppear(rolesInputFieldDeliveryZone);
        rolesInputFieldDeliveryZone.click();
        rolesInputFieldDeliveryZone.clear();
        rolesInputFieldDeliveryZone.sendKeys(role);
        rolesInputFieldDeliveryZone.sendKeys(Keys.RETURN);
        testWebDriver.waitForElementToAppear(addDeliveryZoneRoleButton);
        addDeliveryZoneRoleButton.click();
    }

    public void removeRole(int indexOfCancelIcon, boolean adminRole) {
        int counter = 1;
        List<WebElement> closeButtons = testWebDriver
                .getElementsByXpath("//a[@class='select2-search-choice-close']");
        for (WebElement closeButton : closeButtons) {
            if (counter == indexOfCancelIcon) {
                closeButton.click();
                if (adminRole)
                    clickOk();
                testWebDriver.sleep(100);
                counter++;
            }
        }
    }

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

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

    public void disableUser(String userName) {
        testWebDriver.waitForElementToBeEnabled(disableButton);
        disableButton.click();
        assertEquals(testWebDriver.getElementByXpath("//*[@id='disableUserDialog']/div[1]/h3").getText(),
                "Disable user");
        assertEquals(dialogMessage.getText(), "User \"" + userName + "\" will be disabled");
        clickOk();
    }

    public void clickEnableButton() {
        testWebDriver.waitForElementToBeEnabled(enableButton);
        enableButton.click();
        clickOk();
    }

    public void verifyRolePresent(String roleName) {
        testWebDriver.sleep(500);
        WebElement roleElement = testWebDriver.getElementByXpath("//div[contains(text(),'" + roleName + "')]");
        assertTrue(roleName + " should be displayed", roleElement.isDisplayed());
    }

    public void verifyRoleNotPresent(String roleName) {
        boolean rolePresent;
        try {
            testWebDriver.sleep(500);
            WebElement element = testWebDriver.getElementByXpath("//div[contains(text(),'" + roleName + "')]");
            rolePresent = element.isDisplayed();
        } catch (ElementNotVisibleException e) {
            rolePresent = false;
        } catch (NoSuchElementException e) {
            rolePresent = false;
        }
        assertFalse(rolePresent);
    }

    public String getAllProgramsToSupervise() {
        testWebDriver.waitForElementToAppear(programsToSupervise);
        return programsToSupervise.getText();
    }

    public String getAllProgramsHomeFacility() {
        testWebDriver.waitForElementToAppear(homeFacilityPrograms);
        return homeFacilityPrograms.getText();
    }

    public String getAllWarehouseToSelect() {
        testWebDriver.waitForElementToAppear(warehouseToSelect);
        return warehouseToSelect.getText();
    }

    public void clickViewHere() {
        testWebDriver.waitForElementToAppear(viewHereLink);
        viewHereLink.click();
        testWebDriver.waitForElementToAppear(editUserHeader);
    }

    public void clickOk() {
        testWebDriver.waitForElementToAppear(okButton);
        okButton.click();
    }

    public void verifyRemoveNotPresent() {
        boolean removePresent;
        try {
            testWebDriver.sleep(500);
            removeButton.isDisplayed();
            removePresent = true;
        } catch (ElementNotVisibleException e) {
            removePresent = false;
        } catch (NoSuchElementException e) {
            removePresent = false;
        }
        assertFalse(removePresent);
    }

    public void clickRemoveButtonWithOk(int removeButtonNumber) {
        testWebDriver.sleep(500);
        testWebDriver.getElementByXpath("(//input[@value='Remove'])[" + removeButtonNumber + "]").click();
        clickOk();
    }

    public String getAddedDeliveryZoneLabel() {
        testWebDriver.waitForElementToAppear(addedDeliveryZoneLabel);
        return addedDeliveryZoneLabel.getText();
    }

    public String getVerifiedLabel() {
        testWebDriver.waitForElementToAppear(verifiedLabel);
        return verifiedLabel.getText();
    }

    public void clickWarehouseRolesAccordion() {
        testWebDriver.waitForElementToAppear(orderFulfillmentRolesAccordion);
        orderFulfillmentRolesAccordion.click();
        testWebDriver.sleep(500);
    }

    public void clickHomeFacilityRolesAccordion() {
        testWebDriver.waitForElementToAppear(homeFacilityRolesAccordion);
        homeFacilityRolesAccordion.click();
        testWebDriver.sleep(500);
        //      testWebDriver.refresh();
    }

    public void clickSupervisoryRolesAccordion() {
        testWebDriver.waitForElementToAppear(supervisoryRolesAccordion);
        supervisoryRolesAccordion.click();
        testWebDriver.sleep(500);
    }

    public void clickDeliveryZonesAccordion() {
        testWebDriver.waitForElementToAppear(deliveryZonesAccordion);
        deliveryZonesAccordion.click();
        testWebDriver.sleep(500);
    }

    private void verifyWarehouseSelectedNotAvailable(String warehouse1) {
        assertFalse(getAllWarehouseToSelect().contains(warehouse1));
    }

    public void clickSearchIcon() {
        testWebDriver.waitForElementToAppear(searchIcon);
        searchIcon.click();
    }

    public void clickUserName(int rowNumber) {
        WebElement element = testWebDriver.getElementById("name" + (rowNumber - 1));
        testWebDriver.waitForElementToAppear(element);
        element.click();
    }

    public void clickResetPasswordButton() {
        testWebDriver.waitForElementToAppear(resetPasswordButton);
        resetPasswordButton.click();
    }

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

    public String getOneResultMessage() {
        testWebDriver.waitForElementToAppear(oneResultMessage);
        return oneResultMessage.getText();
    }

    public String getNResultsMessage() {
        testWebDriver.waitForElementToAppear(nResultsMessage);
        return nResultsMessage.getText();
    }

    public String getNoResultMessage() {
        testWebDriver.waitForElementToAppear(noResultMessage);
        return noResultMessage.getText();
    }

    public String getNameHeader() {
        testWebDriver.waitForElementToAppear(nameHeader);
        return nameHeader.getText();
    }

    public String getUserNameHeader() {
        testWebDriver.waitForElementToAppear(userNameHeader);
        return userNameHeader.getText();
    }

    public String getEmailHeader() {
        testWebDriver.waitForElementToAppear(emailHeader);
        return emailHeader.getText();
    }

    public String getVerifiedHeader() {
        testWebDriver.waitForElementToAppear(verifiedHeader);
        return verifiedHeader.getText();
    }

    public String getActiveHeader() {
        testWebDriver.waitForElementToAppear(activeHeader);
        return activeHeader.getText();
    }

    public String getName(int rowNumber) {
        WebElement element = testWebDriver.getElementById("name" + (rowNumber - 1));
        testWebDriver.waitForElementToAppear(element);
        return element.getText();
    }

    public String getUserName(int rowNumber) {
        WebElement element = testWebDriver.getElementById("userName" + (rowNumber - 1));
        testWebDriver.waitForElementToAppear(element);
        return element.getText();
    }

    public String getEmail(int rowNumber) {
        WebElement element = testWebDriver.getElementById("email" + (rowNumber - 1));
        testWebDriver.waitForElementToAppear(element);
        return element.getText();
    }

    public boolean getIsVerified(int rowNumber) {
        WebElement element = testWebDriver.getElementById("verifiedIconOk" + (rowNumber - 1));
        return element.isDisplayed();
    }

    public boolean getIsActive(int rowNumber) {
        WebElement element = testWebDriver.getElementById("activeIconOk" + (rowNumber - 1));
        return element.isDisplayed();
    }

    public void clickCrossIcon() {
        testWebDriver.waitForElementToAppear(closeButton);
        closeButton.click();
        testWebDriver.refresh();
    }

    public void clickHomeFacilityField() {
        testWebDriver.waitForElementToAppear(associatedFacilityField);
        associatedFacilityField.click();
    }

    public void clearFacility() {
        testWebDriver.waitForElementToAppear(clearFacility);
        clearFacility.click();
        okButton.click();
    }

    public boolean isHomeFacilityAccordionDisplayed() {
        return homeFacilityRolesAccordion.isDisplayed();
    }

    public boolean isNameHeaderPresent() {
        return nameHeader.isDisplayed();
    }

    public String getSearchUserLabel() {
        testWebDriver.waitForElementToAppear(searchUserLabel);
        return searchUserLabel.getText();
    }

    public String getSearchPlaceHolder() {
        testWebDriver.waitForElementToAppear(searchUserTextField);
        return searchUserTextField.getAttribute("placeholder");
    }
}