in lib/driverProviders/direct.ts [53:114]
async getNewDriver(): Promise<WebDriver> {
let driver: WebDriver;
switch (this.config_.capabilities.browserName) {
case 'chrome':
let chromeDriverFile: string;
if (this.config_.chromeDriver) {
chromeDriverFile = this.config_.chromeDriver;
} else {
try {
chromeDriverFile = new ChromeDriver().getBinaryPath();
} catch (e) {
throw new BrowserError(
logger, 'Run \'webdriver-manager update\' to download binaries.');
}
}
if (!fs.existsSync(chromeDriverFile)) {
throw new BrowserError(
logger,
'Could not find chromedriver at ' + chromeDriverFile +
'. Run \'webdriver-manager update\' to download binaries.');
}
const chromeService =
(new ServiceBuilderForChrome(chromeDriverFile) as ServiceBuilderForChrome).build();
driver = await DriverForChrome.createSession(
new Capabilities(this.config_.capabilities), chromeService);
break;
case 'firefox':
let geckoDriverFile: string;
if (this.config_.geckoDriver) {
geckoDriverFile = this.config_.geckoDriver;
} else {
try {
geckoDriverFile = new GeckoDriver().getBinaryPath();
} catch (e) {
throw new BrowserError(
logger, 'Run \'webdriver-manager update\' to download binaries.');
}
}
if (!fs.existsSync(geckoDriverFile)) {
throw new BrowserError(
logger,
'Could not find geckodriver at ' + geckoDriverFile +
'. Run \'webdriver-manager update\' to download binaries.');
}
let firefoxService = new SerivceBuilderForFirefox(geckoDriverFile).build();
driver = await DriverForFirefox.createSession(
new Capabilities(this.config_.capabilities), firefoxService);
break;
default:
throw new BrowserError(
logger,
'browserName ' + this.config_.capabilities.browserName +
' is not supported with directConnect.');
}
this.drivers_.push(driver);
return driver;
}