webdriverjs
Version:
A nodejs bindings implementation for selenium 2.0/webdriver
67 lines (56 loc) • 1.95 kB
JavaScript
module.exports = function init (desiredCapabilities, callback) {
var merge = require('deepmerge');
var commandOptions = {
path:"/session",
method:"POST"
};
if (typeof desiredCapabilities == "function") {
callback = desiredCapabilities;
desiredCapabilities = null;
} else {
this.desiredCapabilities = merge(this.desiredCapabilities, desiredCapabilities);
if (desiredCapabilities.sessionId) {
this.sessionId = desiredCapabilities.sessionId;
}
}
/**
* build chrome extension if experimental mode is enabled
*/
if(this.options.experimental && this.desiredCapabilities.browserName === 'chrome') {
var that = this,
fs = require('fs'),
join = require('path').join,
ChromeExtension = require('crx'),
crx = new ChromeExtension({
privateKey: fs.readFileSync(join(__dirname, '../../extension/key.pem')),
rootDirectory: join(__dirname, '../../extension/chrome')
});
crx.load(function(err) {
if (err) return callback(err);
this.pack(function(err, data){
if (err) return callback(err);
/**
* add extension
*/
that.desiredCapabilities.chromeOptions = {
extensions: [data.toString('base64')]
}
that.requestHandler.create(
commandOptions,
{desiredCapabilities: that.desiredCapabilities},
callback
);
/**
* remove created build
*/
this.destroy();
});
});
return;
}
this.requestHandler.create(
commandOptions,
{desiredCapabilities:this.desiredCapabilities},
callback
);
};