-
-
Save anandsunderraman/e351485319a8a0e7df7e to your computer and use it in GitHub Desktop.
//import the selenium web driver | |
var webdriver = require('selenium-webdriver'); | |
var chromeCapabilities = webdriver.Capabilities.chrome(); | |
//setting chrome options to start the browser fully maximized | |
var chromeOptions = { | |
'args': ['--test-type', '--start-maximized'] | |
}; | |
chromeCapabilities.set('chromeOptions', chromeOptions); | |
var driver = new webdriver.Builder().withCapabilities(chromeCapabilities).build(); |
who can tell me how to set chromeOptions with proxy(socks)?
Thanks!
Thanks for this! Saved me hours, worked like a charm.
if anyone is interested, here's how I changed the download directory...
https://gist.github.com/keithpotter21/c54b734267c507d3b94c3d6373dc0657
many thanks to @anandsunderraman for the init options setup!!!
thanks
Hello !
I resolved the issue using this bit of code :
`
var selenium = require('selenium-webdriver');
var capabilities = selenium.Capabilities.chrome();
capabilities.set('chromeOptions',{
'args': ['--headless', '--no-sandbox', 'window-size=1024,768' , '--disable-gpu']
})
this.driver = new selenium.Builder().forBrowser("chrome").withCapabilities(capabilities).build();
`
here's my setup works like a charm
additional info here:
https://github.com/SeleniumHQ/selenium/blob/master/javascript/node/selenium-webdriver/example/
https://sites.google.com/a/chromium.org/chromedriver/mobile-emulation
const { Builder, By, Key, until, Capabilities } = require('selenium-webdriver');
var connect = require('connect');
var serveStatic = require('serve-static');
var chrome = require("selenium-webdriver/chrome");
const { Options } = require('selenium-webdriver/chrome');
__dirname = "/Users/username/projects/1/Resources/HTML"
connect().use(serveStatic(__dirname)).listen(8888, runSeleniumDriver);
function runSeleniumDriver(server) {
console.log("running selenium");
let driver = new Builder()
// .forBrowser('safari')
.forBrowser('chrome')
.setChromeOptions(new Options().setMobileEmulation({ deviceName: 'iPhone 5' }))
.build();
driver.get("http://localhost:8888/index.html");
try {
driver.findElement(By.css('li:nth-child(2) span')).click();
driver.findElement(By.css('li:nth-child(9) span')).click();
driver.findElement(By.css('li:nth-child(5) span')).click();
driver.wait(until.titleIs('Test'), 30000);
} catch (err) {
} finally {
driver.close();
driver.quit();
}
}
Thanks
Thank you!
Thanks for the tip!
If it helps and for those to come with the same issue/break, now the value name: chromeOptions is goo:chromeOptions (Selenium-webdriver v4 & Chrome driver v.75)
Here an example changing the default language of the Chrome browser and disabling the notification: Chrome is being controlled by automated test software. Also includes an extra option to define the custom profile to be used (in the browser).
const { Builder, Capabilities } = require("selenium-webdriver");
let userProfilePath = "C:/path_to_your_test_profile";
let chromeCapabilities = Capabilities.chrome();
//Setting chrome options
chromeCapabilities.set("goog:chromeOptions", {
args: [
"--lang=en",
"disable-infobars",
`user-data-dir=${userProfilePath}`
]
});
driver = await new Builder()
.forBrowser("chrome")
.withCapabilities(chromeCapabilities)
.build();
@EzequielCaballero thank you!
@EzequielCaballero you just damn awesome, bro
Took me. while to figure this ChromeOptions in javascript nodejs out.
Reasons:
- You cannot say
import { Options } from "selenium-webdriver/chrome";
- no idea why to be honest - Testing it with start-maximized is a bad idea. Didn't work for me. setMobileEmulation or my blink-settings argument work
- It is really confusing because there are Capabilities, Options, DesiredCapabilities ChromeOptions etc. and you can load Options from capabilities and such strange things
Here my working example where I disable all images through command line argument (pretty obvious if it works):
import webdriver from "selenium-webdriver";
import chrome from "selenium-webdriver/chrome";
export const getNewChromeWrapperDriver = () => {
// var chromeCapabilities = webdriver.Capabilities.chrome();
const chromeOptions = new chrome.Options();
chromeOptions.addArguments("--blink-settings=imagesEnabled=false");
var driver = new webdriver.Builder()
.forBrowser("chrome")
// .withCapabilities(chromeCapabilities)
.setChromeOptions(chromeOptions)
.build();
const seleniumWrapper = {
webdriver: webdriver,
driver: driver,
quit: async () => {
await driver.quit();
}
};
return seleniumWrapper;
};
As you can see chromeCapabilities are not needed in contrast to some solutions above.
Usage:
import { getNewChromeWrapperDriver } from "./helper/seleniumWrapper.mjs";
const { driver, webdriver } = getNewChromeWrapperDriver()
I kept finding this gist so I thought I add my snippet here...
Thank you!!!
Addition to my comment. I've now upgraded to node 12 since it is now LTS and ran into this issue:
ERR_MODULE_NOT_FOUND selenium-webdriver/chrome
Since import of selenium-webdriver/chrome does no longer work
import chrome from "selenium-webdriver/chrome"; //broken
Here is my workaround:
import require from "requirejs";
const chrome = require("selenium-webdriver/chrome"); //works
This again took me quite a while to find out so I hope this helps!
Is it possible to disable w3c using this config?
dose anyone knows how to do the same with firefox. (open firefox with a specific profile path)
some good source: https://chromedriver.chromium.org/capabilities
and https://peter.sh/experiments/chromium-command-line-switches/
The new syntax for nodejs (NOTE: the key value)
chromeCapabilities.set("goog:chromeOptions", options);
Thank you
Thanks @qquach
thanks @EzequielCaballero
You rock!
For newer versions of Node with ES modules enabled (14+)
import chrome from 'selenium-webdriver/chrome.js';
let opts = new chrome.Options();
opts.excludeSwitches('enable-automation'); // disable 'Chrome is being controlled by automation' banner
Sample code for 2024
import {Builder, Capabilities} from 'selenium-webdriver';
const caps = Capabilities.chrome();
caps.set('goog:chromeOptions', {
'args': ['--headless']
});
const driver = new Builder()
.forBrowser('chrome')
.withCapabilities(caps)
.build();
(async () => {
await driver.get('https://www.geeksforgeeks.org/');
// ...
await driver.quit();
})();
It was hard to find this gist, thanks!
Same problem as @raghuAtWings, any help?