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

Java tutorial

Introduction

Here is the source code for org.musetest.selenium.providers.ChromeDriverProvider.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.chrome.*;
import org.openqa.selenium.remote.*;

import java.io.*;

/**
 * @author Christopher L Merrill (see LICENSE.txt for license details)
 */
@MuseTypeId("chromedriver-provider")
public class ChromeDriverProvider 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.CHROME))
            return null;

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

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

        synchronized (ChromeDriverProvider.class) {
            ChromeOptions options = new ChromeOptions();
            if (getArguments() != null)
                options.addArguments(getArguments());

            DesiredCapabilities desired = DesiredCapabilities.chrome();
            if (capabilities.getVersion() != null && capabilities.getVersion().length() > 0)
                desired.setVersion(capabilities.getVersion());
            if (capabilities.getPlatform() != null && capabilities.getPlatform().length() > 0)
                desired.setPlatform(Platform.fromString(capabilities.getPlatform()));
            options.merge(desired);

            System.setProperty("webdriver.chrome.driver", path.getAbsolutePath());
            return new ChromeDriver(options);
        }
    }

    @Override
    public String getName() {
        return "ChromeDriver (local)";
    }

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