All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.beangle.test.selenium.SeleniumTestBootstrap Maven / Gradle / Ivy

There is a newer version: 3.5.3
Show newest version
/*
 * Beangle, Agile Development Scaffold and Toolkit
 *
 * Copyright (c) 2005-2014, Beangle Software.
 *
 * Beangle 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 3 of the License, or
 * (at your option) any later version.
 *
 * Beangle 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 Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with Beangle.  If not, see .
 */
package org.beangle.test.selenium;

import java.io.File;

import org.beangle.commons.lang.Strings;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.Point;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriverBackedSelenium;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.testng.ITestContext;
import org.testng.TestRunner;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Optional;
import org.testng.annotations.Parameters;
import org.testng.internal.IResultListener;

import com.thoughtworks.selenium.Selenium;

public class SeleniumTestBootstrap  {

    protected static Selenium selenium;
    protected static WebDriver seleniumDriver;
    protected static String PAGE_LOAD_TIMEOUT;

    public SeleniumTestBootstrap() {
        super();
    }

    @BeforeSuite(groups = "webdriver.start")
    @Parameters( { "selenium.url", "selenium.browser", "selenium.timeout" })
    public void beforeSuite(
            @Optional("http://localhost") String baseUrl, 
            @Optional("*firefox") String browserString, 
            @Optional("30000") String maxTimeout) throws Exception {
        seleniumDriver = null;
        if (Strings.contains(browserString, "firefox")) {
            seleniumDriver = new FirefoxDriver();
        } else if (Strings.contains(browserString, "chrome")) {
            seleniumDriver = new ChromeDriver();
        } else if (Strings.contains(browserString, "ie")) {
            seleniumDriver = new InternetExplorerDriver();
        } else {
            seleniumDriver = new HtmlUnitDriver(true);
        }
        
        seleniumDriver.manage().deleteAllCookies();
        seleniumDriver.manage().window().setPosition(new Point(0, 0));
        // maximize browser size
        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        seleniumDriver.manage().window().setSize(new Dimension((int)screenSize.getWidth(), (int)screenSize.getHeight()));
        selenium = new WebDriverBackedSelenium(seleniumDriver, baseUrl);
        PAGE_LOAD_TIMEOUT = maxTimeout;
    }

    @BeforeSuite(groups="webdriver.testng.listener",dependsOnGroups = "webdriver.start")
    public void attachScreenshotListener(ITestContext context) {
        TestRunner tr = (TestRunner) context;
        File outputDirectory = new File(context.getOutputDirectory());
        tr.addListener((IResultListener) new PageCaptureListener(outputDirectory, (TakesScreenshot) seleniumDriver));
    }
    
    @AfterSuite(groups = "webdriver.stop")
    public void afterSuite() {
        selenium.close();
    }


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy