org.musetest.selenium.providers.GeckoDriverProvider.java Source code

Java tutorial

Introduction

Here is the source code for org.musetest.selenium.providers.GeckoDriverProvider.java

Source

package org.musetest.selenium.providers;

import org.musetest.core.*;
import org.musetest.core.events.*;
import org.musetest.core.util.*;
import org.musetest.selenium.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.*;
import org.openqa.selenium.remote.*;

import java.io.*;

/**
 * @author Christopher L Merrill (see LICENSE.txt for license details)
 */
@MuseTypeId("firefox-marionette-provider")
public class GeckoDriverProvider extends BaseLocalDriverProvider {
    @Override
    public WebDriver getDriver(SeleniumBrowserCapabilities capabilities, MuseExecutionContext context) {
        if (getOs() != null && !(OperatingSystem.get().equals(getOs())))
            return null; // this provider is not for the current OS

        if (!capabilities.getName().equals(BrowserType.FIREFOX))
            return null;

        File path = getDriverLocation(context);
        if (path == null) {
            context.raiseEvent(MessageEventType.create(
                    "GeckoDriverProvider would try to satisfy request for Firefox browser, but it was not configured with a path to the driver"));
            return null;
        }

        if (!(path.exists())) {
            context.raiseEvent(MessageEventType.create(
                    "GeckoDriverProvider would try to satisfy request for Firefox browser, but the configured path does not exist: "
                            + path.getAbsolutePath()));
            return null;
        }

        synchronized (GeckoDriverProvider.class) {
            System.setProperty("webdriver.gecko.driver", path.getAbsolutePath());
            DesiredCapabilities selenium_capabilities = DesiredCapabilities.firefox();
            if (capabilities.getVersion() != null && capabilities.getVersion().length() > 0)
                selenium_capabilities.setVersion(capabilities.getVersion());
            if (capabilities.getPlatform() != null && capabilities.getPlatform().length() > 0)
                selenium_capabilities.setPlatform(Platform.fromString(capabilities.getPlatform()));
            selenium_capabilities.setCapability("marionette", true);
            FirefoxOptions options = new FirefoxOptions(selenium_capabilities);
            if (getArguments() != null)
                options.addArguments(getArguments());
            return new FirefoxDriver(options);
        }
    }

    @Override
    public String getName() {
        return "GeckoDriver for Firefox (local)";
    }

    @Override
    public String toString() {
        return "GeckoDriver";
    }
}