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.concurrent.TimeUnit; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; public abstract class BasePage { protected final Log log = LogFactory.getLog(this.getClass()); public final static int NUM_SECONDS_TO_WAIT = 20; protected RemoteWebDriver driver; public BasePage(WebDriver webdriver) { driver = (RemoteWebDriver) webdriver; driver.manage().timeouts().implicitlyWait(NUM_SECONDS_TO_WAIT, TimeUnit.SECONDS); log.debug("Loading " + this.getClass().toString()); } public LoginPage logout() { clickUserTab(); driver.findElementById("logoutLink").click(); return new LoginPage(driver); } public TeamIndexPage clickOrganizationHeaderLink() { driver.findElementById("orgHeader").click(); sleep(1000); return new TeamIndexPage(driver); // try{ // return new TeamIndexPage(driver); // }catch (UnhandledAlertException e){ // driver.findElementById("orgHeader").click(); // return new TeamIndexPage(driver); // } } public WafIndexPage clickWafsHeaderLink() { clickConfigTab(); driver.findElementById("wafsLink").click(); sleep(1000); return new WafIndexPage(driver); } public ReportsIndexPage clickReportsHeaderLink() { driver.findElementById("reportsHeader").click(); waitForElement(driver.findElementByTagName("h2")); return new ReportsIndexPage(driver); } public void clickConfigTab() { driver.findElementById("tabConfigAnchor").click(); } public void clickUserTab() { driver.findElementById("tabUserAnchor").click(); } public ApiKeysIndexPage clickApiKeysLink() { clickConfigTab(); driver.findElementById("apiKeysLink").click(); return new ApiKeysIndexPage(driver); } public DefectTrackerIndexPage clickDefectTrackersLink() { clickConfigTab(); driver.findElementById("defectTrackersLink").click(); return new DefectTrackerIndexPage(driver); } public RemoteProvidersIndexPage clickRemoteProvidersLink() { clickConfigTab(); driver.findElementById("remoteProvidersLink").click(); return new RemoteProvidersIndexPage(driver); } public UserChangePasswordPage clickChangePasswordLink() { clickUserTab(); driver.findElementById("changePasswordLink").click(); return new UserChangePasswordPage(driver); } public UserIndexPage clickManageUsersLink() { clickConfigTab(); driver.findElementById("manageUsersLink").click(); return new UserIndexPage(driver); } public RolesIndexPage clickManageRolesLink() { clickConfigTab(); driver.findElementById("manageRolesLink").click(); return new RolesIndexPage(driver); } public ErrorLogPage clickViewLogsLink() { clickConfigTab(); driver.findElementById("viewLogsLink").click(); return new ErrorLogPage(driver); } public ConfigureDefaultsPage clickConfigureDefaultsLink() { clickConfigTab(); driver.findElementById("configureDefaultsLink").click(); return new ConfigureDefaultsPage(driver); } public DashboardPage clickDashboardLink() { driver.findElementById("dashboardHeader").click(); sleep(1000); return new DashboardPage(driver); } public void sleep(int num) { try { Thread.sleep(num); } catch (InterruptedException e) { e.printStackTrace(); } } public void waitForElementPresence(String element, int number) { int count = 0; // wait til jsonResult2 is present while (!isElementPresent(element)) { sleep(1000); if (count++ > number) { return; } } } public boolean isElementPresent(String elementId) { try { return driver.findElementById(elementId) != null; } catch (NoSuchElementException e) { return false; } } public String getH2Tag() { return driver.findElementByTagName("h2").getText(); } protected void handleAlert() { sleep(3000); WebDriverWait wait = new WebDriverWait(driver, 10); wait.until(ExpectedConditions.alertIsPresent()); Alert alert = driver.switchTo().alert(); alert.accept(); sleep(200); // sleep(1000); } public void waitForElement(WebElement e) { WebDriverWait wait = new WebDriverWait(driver, 20); wait.until(ExpectedConditions.visibilityOf(e)); } public void waitForInvisibleElement(WebElement e) { WebDriverWait wait = new WebDriverWait(driver, 10); wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id(e.getAttribute("id")))); } public boolean isLoggedInUser(String user) { return driver.findElementById("tabUserAnchor").getText().trim().contains(user); } }