Java tutorial
//////////////////////////////////////////////////////////////////////// // // 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; } }