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

com.clarolab.selenium.pages.browser.LocalBrowserBuilder Maven / Gradle / Ivy

Go to download

Framework for automated testing using Selenium. Provides easy configuration of WebDrivers with BrowserFactory. Provides a Page abstraction.

The newest version!
package com.clarolab.selenium.pages.browser;

import com.clarolab.selenium.pages.browser.web.*;
import com.clarolab.selenium.pages.config.TimeoutsConfig;
import com.clarolab.selenium.pages.exception.FrameworkWebDriverException;
import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
import com.google.common.base.Preconditions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.List;
import java.util.Optional;
import java.util.logging.Level;

public class LocalBrowserBuilder extends BrowserBuilder {
    private static final Logger logger = LoggerFactory.getLogger(LocalBrowserBuilder.class);

    private final WebBrowserType browserType;
    private final String baseTestUrl;

    private TimeoutsConfig timeoutsConfig;

    private Optional webDriverPath = Optional.empty();
    private Optional browserBinaryPath = Optional.empty();
    private Optional> options = Optional.empty();

    private LocalBrowserBuilder(WebBrowserType browserType, String baseTestUrl) {
        this.browserType = Preconditions.checkNotNull(browserType, "You must provide a non-null browserType!");
        this.baseTestUrl = Preconditions.checkNotNull(baseTestUrl, "You must provide a non-null baseTestUrl!");
        this.timeoutsConfig = TimeoutsConfig.defaultTimeoutsConfig();
    }

    //------------Getters in case the client wants to inspect the config they have so far-----------
    public WebBrowserType getBrowserType() {
        return browserType;
    }

    public String getBaseTestUrl() {
        return baseTestUrl;
    }

    public TimeoutsConfig getTimeoutsConfig() {
        return timeoutsConfig;
    }

    public Optional getWebDriverPath() {
        return webDriverPath;
    }

    public Optional getBrowserBinaryPath() {
        return browserBinaryPath;
    }

    public Optional> getOptions() {
        return options;
    }

    /**
     * Get a LocalBrowserBuilder for the given browser and base URL for the webapp you are testing against.
     * @param browserType - type of Browser, either CHROME, FIREFOX, or IE
     * @param baseTestUrl - base URL for your webapp, e.g. http://my.site.com/base
     */
    public static LocalBrowserBuilder getBuilder(WebBrowserType browserType, String baseTestUrl) {
        return new LocalBrowserBuilder(browserType, baseTestUrl);
    }

    /**
     * Get a LocalBrowserBuilder for CHROME and base URL for the webapp you are testing against.
     * @param baseTestUrl - base URL for your webapp, e.g. http://my.site.com/base
     */
    public static LocalBrowserBuilder getChromeBuilder(String baseTestUrl) {
        return new LocalBrowserBuilder(WebBrowserType.CHROME, baseTestUrl);
    }

    /**
     * Get a LocalBrowserBuilder for FIREFOX and base URL for the webapp you are testing against.
     * @param baseTestUrl - base URL for your webapp, e.g. http://my.site.com/base
     */
    public static LocalBrowserBuilder getFirefoxBuilder(String baseTestUrl) {
        return new LocalBrowserBuilder(WebBrowserType.FIREFOX, baseTestUrl);
    }

    /**
     * Get a LocalBrowserBuilder for IE and base URL for the webapp you are testing against.
     * @param baseTestUrl - base URL for your webapp, e.g. http://my.site.com/base
     */
    public static LocalBrowserBuilder getInternetExplorerBuilder(String baseTestUrl) {
        return new LocalBrowserBuilder(WebBrowserType.IE, baseTestUrl);
    }

    public WebBrowser build() throws FrameworkWebDriverException {
        logger.info("Building Local Browser with the following config: \n{}", toString());
        WebBrowser browser;
        switch (browserType) {
            case FIREFOX:
                browser = new FirefoxBrowser(baseTestUrl, timeoutsConfig, webDriverPath, browserBinaryPath, Optional.empty(), getBrowserLocale(), getStartWindowWidth(), getStartWindowHeight(), Optional.empty());
                break;
            case CHROME:
                browser = new ChromeBrowser(baseTestUrl, timeoutsConfig, webDriverPath, browserBinaryPath, Optional.empty(), getBrowserLocale(), getStartWindowWidth(), getStartWindowHeight(),
                        getBrowserLogLevel(), getBrowserLogFile(), Optional.empty(), options);
                break;
            case IE:
                browser = new InternetExplorerBrowser(baseTestUrl, timeoutsConfig, webDriverPath, browserBinaryPath, Optional.empty(), getBrowserLocale(), getStartWindowWidth(), getStartWindowHeight(),
                        getBrowserLogLevel(), getBrowserLogFile(), Optional.empty());
                break;
            case SAFARI:
                browser = new SafariBrowser(baseTestUrl, timeoutsConfig, webDriverPath, browserBinaryPath, Optional.empty(), getBrowserLocale(), getStartWindowWidth(), getStartWindowHeight(),
                                            getBrowserLogLevel(), getBrowserLogFile(), Optional.empty());
                break;
            default:
                throw new IllegalArgumentException("Only Firefox, Chrome, and IE are currently supported!");
        }
        browser.initializeBrowser();
        return browser;
    }

    public LocalBrowserBuilder withTimeoutsConfig(TimeoutsConfig timeoutsConfig) {
        this.timeoutsConfig = timeoutsConfig == null ? TimeoutsConfig.defaultTimeoutsConfig() : timeoutsConfig;
        return this;
    }

    public LocalBrowserBuilder withWebDriverPath(String pathToWebDriver) {
        this.webDriverPath = Optional.ofNullable(pathToWebDriver);
        return this;
    }

    public LocalBrowserBuilder withBrowserBinaryPath(String pathToBrowserBinary) {
        this.browserBinaryPath = Optional.ofNullable(pathToBrowserBinary);
        return this;
    }

    public LocalBrowserBuilder withBrowserLocale(String browserLocale) {
        this.setBrowserLocale(Optional.ofNullable(browserLocale));
        return this;
    }

    public LocalBrowserBuilder withStartWindowWidth(Integer startWindowWidth) {
        this.setStartWindowWidth(Optional.ofNullable(startWindowWidth));
        return this;
    }

    public LocalBrowserBuilder withStartWindowHeight(Integer startWindowHeight) {
        this.setStartWindowHeight(Optional.ofNullable(startWindowHeight));
        return this;
    }

    public LocalBrowserBuilder withBrowserLogLevel(Level browserLogLevel) {
        this.setBrowserLogLevel(Optional.ofNullable(browserLogLevel));
        return this;
    }

    public LocalBrowserBuilder withBrowserLogFile(String browserLogFile) {
        this.setBrowserLogFile(Optional.ofNullable(browserLogFile));
        return this;
    }

    public LocalBrowserBuilder withOptions(List options) {
        this.options = Optional.ofNullable(options);
        return this;
    }

    @Override
    public String toString() {
        return MoreObjects.toStringHelper(this)
                .add("browserType", browserType)
                .add("baseTestUrl", baseTestUrl)
                .add("webDriverPath", webDriverPath)
                .add("browserBinaryPath", browserBinaryPath)
                .add("browserLocale", getBrowserLocale())
                .add("startWindowWidth", getStartWindowWidth())
                .add("startWindowHeight", getStartWindowHeight())
                .add("browserLogLevel", getBrowserLogLevel())
                .add("browserLogFile", getBrowserLogFile())
                .add("options", options)
                .toString();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy