Hi Simon,
thanks for the reply.
The original selenium script that is working in the GUI but not in docker is:
```
function browserLaunched(ssutils) {
var Thread = Java.type('java.lang.Thread');
logger(ssutils.getBrowserId() + ' was launched...\n');
var driver = ssutils.getWebDriver();
driver.get('targetURL');
ssutils.waitForURL(5000);
logger('B2C loaded. Waiting for site to build up...\n');
Thread.sleep(3000);
logger('Sending credentials...\n');
var usernameInput = driver.findElement(By.id('signInName'));
var passwordInput = driver.findElement(By.id('password'));
var submitButton = driver.findElement(By.id('next'));
usernameInput.sendKeys('username');
passwordInput.sendKeys('password');
submitButton.click();
logger('Credentials were sent. Waiting to be redirected...\n');
Thread.sleep(10000);
logger('Session should now be established...\n');
}
function logger() {
print('[' + this['
zap.script.name'] + '] ' + arguments[0]);
}
```
It's really simple but works like a charm with the ajax-spider. At least in the GUI...
-----------------------------------------------------------------------------------------------
The authentication script I used last in the GUI based on the one you showed in the video and in which selenium does not work as expected is:
```
var By = Java.type('
org.openqa.selenium.By');
var URI = Java.type('org.apache.commons.httpclient.URI');
var Thread = Java.type('java.lang.Thread');
var HttpHeader = Java.type('org.parosproxy.paros.network.HttpHeader');
var HttpRequestHeader = Java.type('org.parosproxy.paros.network.HttpRequestHeader');
var scriptVars = Java.type('org.zaproxy.zap.extension.script.ScriptVars');
function authenticate(helper, paramsValues, credentials){
logger('starting authentication...');
var selenium = org.parosproxy.paros.control.Control.getSingleton().
getExtensionLoader().getExtension(
org.zaproxy.zap.extension.selenium.ExtensionSelenium.class);
// ------------
// Here's the problem
// ------------
var driver = selenium.getWebDriverProxyingViaZAP(5, 'firefox');
// The browser starts as expected
driver.get('targetURL');
// The browser now just hangs and does not load the page
driver.close();
logger('verifying if authenticated...');
var requestURI = new URI('verificationURL');
var requestMethod = HttpRequestHeader.GET;
var requestHeader = new HttpRequestHeader(requestMethod, requestURI, HttpHeader.HTTP11);
var msg = helper.prepareMessage();
msg.setRequestHeader(requestHeader);
helper.sendAndReceive(msg);
logger('got message: ' + msg.getResponseBody().toString());
return msg;
}
function getRequiredParamsNames(){
return [];
}
function getOptionalParamsNames(){
return [];
}
function getCredentialsParamsNames(){
return ["username", "password"];
}
function logger() {
print('[' + this['
zap.script.name'] + '] ' + arguments[0]);
}
```
-----------------------------------------------------------------------------------------------
Basically the same thing works in a stand alone script:
```
var By = Java.type('
org.openqa.selenium.By');
var Thread = Java.type('java.lang.Thread');
var selenium = org.parosproxy.paros.control.Control.getSingleton().
getExtensionLoader().getExtension(
org.zaproxy.zap.extension.selenium.ExtensionSelenium.class);
var driver = selenium.getWebDriverProxyingViaZAP(5, 'firefox');
driver.get('targetURL');
Thread.sleep(3000);
driver.findElement(By.id('signInName')).sendKeys('username');
driver.findElement(By.id('password')).sendKeys('password');
driver.findElement(By.id('next')).click();
```
Thanks again for taking the time!