dk.netarkivet.systemtest.page.PageHelper.java Source code

Java tutorial

Introduction

Here is the source code for dk.netarkivet.systemtest.page.PageHelper.java

Source

/*
 * #%L
 * NetarchiveSuite System test
 * %%
 * Copyright (C) 2005 - 2014 The Royal Danish Library, the Danish State and University Library,
 *             the National Library of France and the Austrian National Library.
 * %%
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation, either version 2.1 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 General Lesser Public License for more details.
 * 
 * You should have received a copy of the GNU General Lesser Public
 * License along with this program.  If not, see
 * <http://www.gnu.org/licenses/lgpl-2.1.html>.
 * #L%
 */
package dk.netarkivet.systemtest.page;

import java.util.HashMap;
import java.util.Map;

import org.jaccept.TestEventManager;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;

public class PageHelper {
    private static WebDriver driver;
    private static String baseUrl;
    private static Map<MenuPages, String> pageMapping = new HashMap<MenuPages, String>();

    public static enum MenuPages {
        Frontpage, SelectiveHarvests, SnapshotHarvests, Schedules, FindDomains, CreateDomain, DomainStatistics, AliasSummary, EditHarvestTemplates, GlobalCrawlerTraps, ExtendedFields, AllJobs, AllJobsPerDomain, RunningJobs, Filestatus, BatchjobOverview, ViewerproxyStatus, OverviewOfTheSystemState
    }

    static {
        pageMapping.put(MenuPages.Frontpage, "HarvestDefinition");
        pageMapping.put(MenuPages.SelectiveHarvests, "HarvestDefinition/Definitions-selective-harvests.jsp");
        pageMapping.put(MenuPages.SnapshotHarvests, "HarvestDefinition/Definitions-snapshot-harvests.jsp");
        pageMapping.put(MenuPages.Schedules, "HarvestDefinition/Definitions-schedules.jsp");
        pageMapping.put(MenuPages.FindDomains, "HarvestDefinition/Definitions-find-domains.jsp");
        pageMapping.put(MenuPages.CreateDomain, "HarvestDefinition/Definitions-create-domain.jsp");
        pageMapping.put(MenuPages.DomainStatistics, "HarvestDefinition/Definitions-domain-statistics.jsp");
        pageMapping.put(MenuPages.AliasSummary, "HarvestDefinition/Definitions-alias-summary.jsp");
        pageMapping.put(MenuPages.EditHarvestTemplates, "HarvestDefinition/Definitions-edit-harvest-templates.jsp");
        pageMapping.put(MenuPages.GlobalCrawlerTraps,
                "HarvestDefinition/Definitions-edit-global-crawler-traps.jsp");
        pageMapping.put(MenuPages.ExtendedFields, "HarvestDefinition/Definitions-list-extendedfields.jsp");
        pageMapping.put(MenuPages.AllJobs, "History/Harveststatus-alljobs.jsp");
        pageMapping.put(MenuPages.AllJobsPerDomain, "History/Harveststatus-perdomain.jsp");
        pageMapping.put(MenuPages.RunningJobs, "History/Harveststatus-running.jsp");
        pageMapping.put(MenuPages.Filestatus, "HarvestDefinition/Definitions-selective-harvests.jsp");
        pageMapping.put(MenuPages.BatchjobOverview, "BitPreservation/Bitpreservation-filestatus.jsp");
        pageMapping.put(MenuPages.ViewerproxyStatus, "QA/QA-status.jsp");
        pageMapping.put(MenuPages.OverviewOfTheSystemState, "Status/Monitor-JMXsummary.jsp");
    }

    public static void gotoPage(MenuPages page) {
        checkInitialization();
        String pageUrl = pageMapping.get(page);
        TestEventManager.getInstance().addStimuli("Loading " + pageUrl);
        driver.get(baseUrl + "/" + pageUrl);
    }

    /**
     * Load the page relative to the base ur.
     *
     * @param subURL
     */
    public static void gotoSubPage(String subURL) {
        checkInitialization();
        TestEventManager.getInstance().addStimuli("Loading " + subURL);
        driver.get(baseUrl + "/" + subURL);
    }

    /**
     * Load the page relative to the base url. Doesn't log the page reload
     *
     * @param subURL
     */
    public static void reloadSubPage(String subURL) {
        checkInitialization();
        driver.get(baseUrl + "/" + subURL);
    }

    public static void clickLink(String linkText) {
        checkInitialization();
        TestEventManager.getInstance().addStimuli("Clicking '" + linkText + "' link.");
        driver.findElement(By.partialLinkText(linkText)).click();
    }

    public static void initialize(WebDriver theDriver, String theBaseUrl) {
        driver = theDriver;
        baseUrl = theBaseUrl;
        checkInitialization();
    }

    public static WebDriver getWebDriver() {
        checkInitialization();
        return driver;
    }

    /**
     * In case of button clicks causing page loads this function should be called to ensure the new page is finished
     * loading before the test is continued.
     */
    public static void waitForPageToLoad() {
        driver.findElement(By.className("systeminfo"));
    }

    private static void checkInitialization() {
        if (driver == null || baseUrl == null) {
            throw new IllegalStateException("Failed to goto page, webdriver " + "and baseurl hasn't been set.");
        }
    }
}