Skip to content

Instantly share code, notes, and snippets.

Last active May 10, 2024 15:17
Show Gist options
  • Save anandsunderraman/e351485319a8a0e7df7e to your computer and use it in GitHub Desktop.
Save anandsunderraman/e351485319a8a0e7df7e to your computer and use it in GitHub Desktop.
Selenium Web Driver Set Chrome Options
//import the selenium web driver
var webdriver = require('selenium-webdriver');
var chromeCapabilities =;
//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();
Copy link

I was looking for this for 4+ hours. No further documentation, article, blog post about how to pass args to chromeOptions or even how to define chromeOptions manually. Thanks for this Gist.

Copy link

Thank you for this

Copy link

you saved me a few hours of my life. Thank you ever so mach!

Copy link


Copy link

raghuAtWings commented Apr 26, 2017

below is my code, it still doesn't open chrome in maximized view. Please help. I am new to this and have been trying to find a solution for hours.

const assert = require('assert');
promise.USE_PROMISE_MANAGER = false;

var webdriver = require('selenium-webdriver');
var chromeCapabilities =;
//setting chrome options to start the browser fully maximized
var chromeOptions = {
  'args': ['--test-type', '--start-maximized']
chromeCapabilities.set('chromeOptions', chromeOptions);

describe('test application flow', function() {
  let driver;

  beforeEach(async function() {
    driver = new webdriver.Builder()

  afterEach(async function() {
    await driver.wait(() => {})

  it('create application', async function() {
    await driver.get('https://localhost:8000/#/login');


Copy link

moelheni commented Aug 2, 2017

Same problem as @raghuAtWings, any help?

Copy link

who can tell me how to set chromeOptions with proxy(socks)?

Copy link

Thanks for this! Saved me hours, worked like a charm.

Copy link

if anyone is interested, here's how I changed the download directory...

many thanks to @anandsunderraman for the init options setup!!!

Copy link


Copy link

benfr1 commented Aug 9, 2018

Hello !

I resolved the issue using this bit of code :

var selenium = require('selenium-webdriver');

var capabilities =;


'args': ['--headless', '--no-sandbox', 'window-size=1024,768' , '--disable-gpu']


this.driver = new selenium.Builder().forBrowser("chrome").withCapabilities(capabilities).build();


Copy link

lazysergey commented Aug 12, 2018

here's my setup works like a charm

additional info here:

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')
        .setChromeOptions(new Options().setMobileEmulation({ deviceName: 'iPhone 5' }))

    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 {

Copy link


Copy link

ybratun commented Mar 10, 2019

Thank you!

Copy link

EzequielCaballero commented Jun 12, 2019

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 =;

//Setting chrome options
chromeCapabilities.set("goog:chromeOptions", {
  args: [

driver = await new Builder()

Copy link

@EzequielCaballero thank you!

Copy link

@EzequielCaballero you just damn awesome, bro

Copy link

codingyourlife commented Aug 13, 2019

Took me. while to figure this ChromeOptions in javascript nodejs out.


  • 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 =;

  const chromeOptions = new chrome.Options();

  var driver = new webdriver.Builder()
    // .withCapabilities(chromeCapabilities)

  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.


import { getNewChromeWrapperDriver } from "./helper/seleniumWrapper.mjs";

const { driver, webdriver } = getNewChromeWrapperDriver()

I kept finding this gist so I thought I add my snippet here...

Copy link

jbdoster commented Sep 4, 2019

Thank you!!!

Copy link

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!

Copy link

Is it possible to disable w3c using this config?

Copy link

dose anyone knows how to do the same with firefox. (open firefox with a specific profile path)

Copy link

qquach commented Oct 14, 2020

some good source:

The new syntax for nodejs (NOTE: the key value)
chromeCapabilities.set("goog:chromeOptions", options);

Copy link

ramrami commented Oct 17, 2020

Thank you

Copy link

Thanks @qquach

Copy link

Copy link

You rock!

Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment