in module/geb-core/src/main/groovy/geb/driver/CloudDriverFactory.groovy [35:60]
WebDriver create(String specification, String username, String key, Map<String, Object> additionalCapabilities = [:]) {
def remoteDriverOperations = new RemoteDriverOperations(getClass().classLoader)
Class<? extends WebDriver> remoteWebDriverClass = remoteDriverOperations
.optionalRemoteWebDriverClass
.orElseThrow {
def message = 'org.openqa.selenium.remote.RemoteWebDriver needs to be on the classpath to create ' +
'RemoteWebDriver instances'
throw new ClassNotFoundException(message)
}
def url = new URL(assembleProviderUrl(username, key))
Properties capabilities = new Properties()
if (specification) {
capabilities.load(new StringReader(specification))
}
capabilities.putAll(additionalCapabilities)
def desiredCapabilities = remoteDriverOperations.softLoadRemoteDriverClass('DesiredCapabilities').getConstructor().newInstance()
configureCapabilities(username, key, desiredCapabilities)
capabilities.each { capability, value ->
desiredCapabilities.setCapability(capability, value)
}
remoteWebDriverClass.getConstructor(URL, Capabilities).newInstance(url, makeW3cCompliant(desiredCapabilities))
}