80 lines
2.0 KiB
JavaScript
80 lines
2.0 KiB
JavaScript
const { Builder } = require('selenium-webdriver');
|
|
const firefox = require('selenium-webdriver/firefox');
|
|
const chrome = require('selenium-webdriver/chrome');
|
|
const edge = require('selenium-webdriver/edge');
|
|
const args = process.argv.slice(2);
|
|
|
|
|
|
const userAgents = new Map([
|
|
['desktop', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.34'],
|
|
['mobile', 'Mozilla/5.0 (Linux; Android 10; Redmi Note 8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36'],
|
|
]);
|
|
|
|
const userAgent = userAgents.get(args.find(arg => arg.startsWith('--userAgent='))?.split('=')[1] ?? 'desktop');
|
|
|
|
function createDriverChrome() {
|
|
const driver = new Builder()
|
|
.forBrowser('chrome')
|
|
.setChromeOptions(
|
|
new chrome.Options()
|
|
.windowSize({ width: 1024, height: 768 })
|
|
.addArguments(`--user-agent=${userAgent}`),
|
|
)
|
|
.build();
|
|
return driver;
|
|
}
|
|
|
|
function createDriverFirefox() {
|
|
const driver = new Builder()
|
|
.forBrowser('firefox')
|
|
.setFirefoxOptions(
|
|
new firefox.Options()
|
|
.windowSize({ width: 1024, height: 768 })
|
|
.addArguments(`--user-agent=${userAgent}`),
|
|
)
|
|
.build();
|
|
return driver;
|
|
}
|
|
|
|
function createDriverEdge() {
|
|
const driver = new Builder()
|
|
.forBrowser('MicrosoftEdge')
|
|
.setEdgeOptions(
|
|
new edge.Options()
|
|
.windowSize({ width: 1024, height: 768 })
|
|
.addArguments(`--user-agent=${userAgent}`),
|
|
)
|
|
.build();
|
|
return driver;
|
|
}
|
|
|
|
function createDriver() {
|
|
let browserType = 'chrome';
|
|
for (let i = 0; i < args.length; i++) {
|
|
if (args[i].startsWith('--')) {
|
|
if (args[i] === '--firefox') {
|
|
browserType = 'firefox';
|
|
}
|
|
else if (args[i] === '--edge') {
|
|
browserType = 'edge';
|
|
}
|
|
}
|
|
}
|
|
let driver;
|
|
switch (browserType) {
|
|
case 'firefox':
|
|
driver = createDriverFirefox();
|
|
break;
|
|
case 'edge':
|
|
driver = createDriverEdge();
|
|
break;
|
|
default:
|
|
driver = createDriverChrome();
|
|
}
|
|
console.log(`Using ${browserType} browser with user agent: ${userAgent}`);
|
|
return driver;
|
|
}
|
|
|
|
module.exports = {
|
|
createDriver,
|
|
}; |