com.denimgroup.threadfix.selenium.pages.DefectTrackerIndexPage.java Source code

Java tutorial

Introduction

Here is the source code for com.denimgroup.threadfix.selenium.pages.DefectTrackerIndexPage.java

Source

////////////////////////////////////////////////////////////////////////
//
//     Copyright (c) 2009-2013 Denim Group, Ltd.
//
//     The contents of this file are subject to the Mozilla Public License
//     Version 2.0 (the "License"); you may not use this file except in
//     compliance with the License. You may obtain a copy of the License at
//     http://www.mozilla.org/MPL/
//
//     Software distributed under the License is distributed on an "AS IS"
//     basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
//     License for the specific language governing rights and limitations
//     under the License.
//
//     The Original Code is ThreadFix.
//
//     The Initial Developer of the Original Code is Denim Group, Ltd.
//     Portions created by Denim Group, Ltd. are Copyright (C)
//     Denim Group, Ltd. All Rights Reserved.
//
//     Contributor(s): Denim Group, Ltd.
//
////////////////////////////////////////////////////////////////////////
package com.denimgroup.threadfix.selenium.pages;

import java.util.ArrayList;
import java.util.List;

import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.Select;

public class DefectTrackerIndexPage extends BasePage {

    private WebElement nameInput;
    private WebElement urlInput;
    private Select defectTrackerTypeSelect;
    private WebElement addDefectTrackerButton;
    private List<WebElement> editButtons = new ArrayList<WebElement>();
    //   private List<WebElement> deleteButtons = new ArrayList<WebElement>();
    private List<WebElement> names = new ArrayList<WebElement>();

    public static String DT_URL = "http://10.2.10.145/bugzilla";
    public static String JIRA_URL = "https://threadfix.atlassian.net/";

    public DefectTrackerIndexPage(WebDriver webdriver) {
        super(webdriver);
        //nameInput = driver.findElementById("nameInput");
        //urlInput = driver.findElementById("urlInput");
        //defectTrackerTypeSelect = new Select(driver.findElementById("defectTrackerTypeSelect"));
        addDefectTrackerButton = driver.findElementById("addNewDTButton");

        for (int i = 1; i <= getNumRows(); i++) {
            editButtons.add(driver.findElementById("editDefectTracker" + i + "Button"));
            //         deleteButtons.add(driver.findElementById("deleteButton" + i));
            names.add(driver.findElementById("defectTrackerName" + i));
        }
    }

    public int getNumRows() {
        int size = driver.findElementsByClassName("bodyRow").size();
        if (isTextPresentInDefectTrackerTableBody("No Defect Trackers found")) {
            return 0;
        }
        return size;
    }

    private int getIndex(String roleName) {
        int i = -1;
        for (WebElement name : names) {
            i++;
            String text = name.getText().trim();
            if (text.equals(roleName.trim())) {
                return i;
            }
        }
        return -1;
    }

    public DefectTrackerIndexPage clickEditLink(String roleName) {
        sleep(1000);
        editButtons.get(getIndex(roleName)).click();
        sleep(1000);
        return new DefectTrackerIndexPage(driver);
    }
    /*
    public DefectTrackerIndexPage clickDeleteButton(String roleName) {
       //deleteButtons.get((getIndex(roleName)+1)).click();
       System.out.println("Deleting " + (getIndex(roleName)+1));
       driver.findElementById("deleteButton" + (getIndex(roleName)+1)).click();
       return new DefectTrackerIndexPage(driver);
    }
    */

    public DefectTrackerIndexPage enterName(String oldName, String newName) {
        if (oldName == null) {
            driver.findElementsById("nameInput").get(names.size()).clear();
            driver.findElementsById("nameInput").get(names.size()).sendKeys(newName);
        } else {
            driver.findElementsById("nameInput").get(getIndex(oldName)).clear();
            driver.findElementsById("nameInput").get(getIndex(oldName)).sendKeys(newName);
        }
        return new DefectTrackerIndexPage(driver);
    }

    public DefectTrackerIndexPage enterType(String oldName, String newType) {
        if (oldName == null) {
            new Select(driver.findElementsById("defectTrackerTypeSelect").get(names.size()))
                    .selectByVisibleText(newType);
        } else {
            new Select(driver.findElementsById("defectTrackerTypeSelect").get(getIndex(oldName)))
                    .selectByVisibleText(newType);
        }
        return new DefectTrackerIndexPage(driver);
    }

    public DefectTrackerIndexPage enterURL(String oldName, String newURL) {
        if (oldName == null) {
            driver.findElementsById("urlInput").get(names.size()).clear();
            driver.findElementsById("urlInput").get(names.size()).sendKeys(newURL);
        } else {
            driver.findElementsById("urlInput").get(getIndex(oldName)).clear();
            driver.findElementsById("urlInput").get(getIndex(oldName)).sendKeys(newURL);
        }
        return new DefectTrackerIndexPage(driver);
    }

    public DefectTrackerIndexPage clickDeleteButton(String name) {
        ////      for(int i = 0; i < getNumRows(); i ++){
        //////         System.out.println(names.get(i).getText() + " and name = " + name);
        ////         if(name.equals(names.get(i).getText())){
        ////            //driver.findElementById("deleteButton" + (i + 1)).click();
        //////            System.out.println("Got in here");
        //////            driver.fin
        //////            deleteButtons.get(i).click();
        //            handleAlert();
        //         }
        //      }

        clickEditLink(name);
        sleep(500);
        driver.findElementById("deleteButton" + (getIndex(name) + 1)).click();
        handleAlert();
        return new DefectTrackerIndexPage(driver);
    }

    public DefectTrackerIndexPage clickCloseButton() {
        driver.findElementById("closeNewDTModalButton").click();
        return new DefectTrackerIndexPage(driver);
    }

    public String getDefectTrackerName(int row) {
        return driver.findElementById("defectTrackerName" + row).getText();
    }

    public String getNameInput() {
        return nameInput.getText();
    }

    public DefectTrackerIndexPage setNameInput(String text) {
        driver.findElementById("nameInput").clear();
        driver.findElementById("nameInput").sendKeys(text);
        return new DefectTrackerIndexPage(driver);
    }

    public DefectTrackerIndexPage setNameInput(String text, int row) {
        driver.findElementsById("nameInput").get(row).clear();
        driver.findElementsById("nameInput").get(row).sendKeys(text);
        return new DefectTrackerIndexPage(driver);
    }

    public String getUrlInput() {
        return urlInput.getText();
    }

    public DefectTrackerIndexPage setUrlInput(String text) {
        driver.findElementById("urlInput").clear();
        driver.findElementById("urlInput").sendKeys(text);
        return new DefectTrackerIndexPage(driver);
    }

    public DefectTrackerIndexPage setUrlInput(String text, int row) {
        driver.findElementsById("urlInput").get(row).clear();
        driver.findElementsById("urlInput").get(row).sendKeys(text);
        return new DefectTrackerIndexPage(driver);
    }

    public String getDefectTrackerTypeSelect() {
        return defectTrackerTypeSelect.getFirstSelectedOption().getText();
    }

    public DefectTrackerIndexPage setDefectTrackerTypeSelect(String code) {
        new Select(driver.findElementById("defectTrackerTypeSelect")).selectByVisibleText(code);
        return new DefectTrackerIndexPage(driver);
    }

    public DefectTrackerIndexPage setDefectTrackerTypeSelect(String code, int row) {
        new Select(driver.findElementsById("defectTrackerTypeSelect").get(row)).selectByVisibleText(code);
        return new DefectTrackerIndexPage(driver);
    }

    public DefectTrackerIndexPage clickAddDefectTrackerButton() {
        addDefectTrackerButton.click();
        waitForElement(driver.findElementById("createDefectTracker"));
        return new DefectTrackerIndexPage(driver);
    }

    public DefectTrackerIndexPage clickAddDefectTrackerButtonInvalid() {
        driver.findElementById("submitDTCreateModal").click();
        return new DefectTrackerIndexPage(driver);
    }

    public String getNameErrorsText() {
        return driver.findElementById("name.errors").getText();
    }

    public String getUrlErrorsText() {
        sleep(2000);
        return driver.findElementById("url.errors").getText();
    }

    public boolean isTextPresentInDefectTrackerTableBody(String newDefectTrackerName) {
        return driver.findElementById("defectTrackerTableBody").getText().contains(newDefectTrackerName);
    }

    public DefectTrackerIndexPage clickDeleteButton(int row) {
        driver.findElementById("deleteButton" + row).click();
        handleAlert();
        return new DefectTrackerIndexPage(driver);
    }

    public DefectTrackerIndexPage clickSaveNewDefectTracker() {
        driver.findElementById("submitDTCreateModal").click();
        sleep(1000);
        waitForInvisibleElement(driver.findElementById("createDefectTracker"));
        return new DefectTrackerIndexPage(driver);
    }

    public String getNameText(int i) {
        return driver.findElementById("defectTrackerName" + i).getText();
    }

    public String getTypeText(int i) {
        return driver.findElementById("defectTrackerType" + i).getText();
    }

    public String getUrlText(int i) {
        return driver.findElementById("defectTrackerUrl" + i).getText();
    }

    public DefectTrackerIndexPage clickUpdateDefectTrackerButton() {
        driver.findElementByLinkText("Update Defect Tracker").click();
        //      waitForInvisibleElement(driver.findElementByClassName("in"));
        sleep(3000);
        return new DefectTrackerIndexPage(driver);
    }

    public DefectTrackerIndexPage clickUpdateDefectTrackerButtonInvalid() {
        driver.findElementByLinkText("Update Defect Tracker").click();
        return new DefectTrackerIndexPage(driver);
    }

    public boolean doesNameExist(String name) {
        for (int i = 1; i <= getNumRows(); i++) {
            try {
                if (name.equals(getNameText(i))) {
                    return true;
                }
            } catch (NoSuchElementException e) {
                return false;
            }
        }
        return false;
    }

    public boolean doesTypeExistForName(String name, String type) {
        for (int i = 1; i <= getNumRows(); i++) {
            if (name.equals(getNameText(i))) {
                if (driver.findElementById("defectTrackerType" + i).getText().equals(type)) {
                    return true;
                }
            }
        }
        return false;
    }

    public boolean doesURLExistForName(String name, String url) {
        for (int i = 1; i <= getNumRows(); i++) {
            if (name.equals(getNameText(i))) {
                if (driver.findElementById("defectTrackerUrl" + i).getText().equals(url)) {
                    return true;
                }
            }
        }
        return false;
    }
}