msedgedriver
Version:
Microsoft Edge Driver for Selenium
50 lines (49 loc) • 1.59 kB
JavaScript
const fs = require("fs");
const path = require("path");
const tcpPortUsed = require("tcp-port-used");
function getPortFromArgs(args) {
let port = 9515;
if (!args) {
return port;
}
const portRegexp = /--port=(\d*)/;
const portArg = args.find(function(arg) {
return portRegexp.test(arg);
});
if (portArg) {
port = parseInt(portRegexp.exec(portArg)[1]);
}
return port;
}
process.env.PATH = path.join(__dirname, "msedgedriver") + path.delimiter + process.env.PATH;
exports.path =
process.platform === "win32"
? path.join(__dirname, "msedgedriver", "msedgedriver.exe")
: path.join(__dirname, "msedgedriver", "msedgedriver");
exports.version = "91.0.864.53";
exports.start = function(args, returnPromise) {
let command = exports.path;
if (!fs.existsSync(command)) {
console.log("Could not find msedgedriver in default path: ", command);
console.log("Falling back to use global msedgedriver bin");
command = process.platform === "win32" ? "msedgedriver.exe" : "msedgedriver";
}
const cp = require("child_process").spawn(command, args);
cp.stdout.pipe(process.stdout);
cp.stderr.pipe(process.stderr);
exports.defaultInstance = cp;
if (!returnPromise) {
return cp;
}
const port = getPortFromArgs(args);
const pollInterval = 100;
const timeout = 10000;
return tcpPortUsed.waitUntilUsed(port, pollInterval, timeout).then(function() {
return cp;
});
};
exports.stop = function() {
if (exports.defaultInstance != null) {
exports.defaultInstance.kill();
}
};