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

Java tutorial

Introduction

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

Source

package org.musetest.selenium.providers;

import org.musetest.core.*;
import org.musetest.selenium.*;
import org.musetest.selenium.steps.*;
import org.openqa.selenium.*;
import org.openqa.selenium.remote.*;
import org.slf4j.*;

import java.net.*;
import java.util.*;

/**
 * @author Christopher L Merrill (see LICENSE.txt for license details)
 */
@MuseTypeId("remote-provider")
public class RemoteDriverProvider implements WebDriverProvider {
    @Override
    public WebDriver getDriver(SeleniumBrowserCapabilities capabilities, MuseExecutionContext context) {
        synchronized (RemoteDriverProvider.class) {
            try {
                return new RemoteWebDriver(new URL(_url), capabilities.toDesiredCapabilities());
            } catch (MalformedURLException e) {
                LOG.error("Unable to parse URL: " + _url);
            }
        }
        return null;
    }

    public String getUrl() {
        return _url;
    }

    @SuppressWarnings("unused") // used by JSON de/serialization and in UI
    public void setUrl(String url) {
        if (!Objects.equals(_url, url)) {
            String old_url = _url;
            _url = url;
            for (ChangeListener listener : _listeners)
                listener.urlChanged(old_url, url);
        }
    }

    @Override
    public String toString() {
        return "remote (" + _url + ")";
    }

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

    @SuppressWarnings("unused") // public API
    public void addChangeListener(ChangeListener listener) {
        _listeners.add(listener);
    }

    @SuppressWarnings("unused") // public API
    public void removeChangeListener(ChangeListener listener) {
        _listeners.remove(listener);
    }

    private String _url = DEFAULT_URL;
    private transient Set<ChangeListener> _listeners = new HashSet<>();

    private final static Logger LOG = LoggerFactory.getLogger(RemoteDriverProvider.class);

    public final static String DEFAULT_URL = "http://selenium.grid.host:4444/grid";

    @SuppressWarnings("WeakerAccess") // public API
    public interface ChangeListener {
        void urlChanged(String old_url, String new_url);
    }
}