Ed Cottrell Ed Cottrell - 1 year ago 236
Node.js Question

ChromeOptions causes reference error using Selenium ChromeDriver for node.js

I am trying to use the ChromeDriver driver for Selenium to run some tests using Chrome, but I'm getting a reference error when I use


My Code

I want to force the use of certain options, such as testing it against a particular user profile. Based on the Selenium and ChromeDriver documentation, this is my file

opt = new chromeOptions(); // ERROR OCCURS HERE!
opt.setBinary("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");
opt.addArguments("--user-data-dir=C:\\Users\\MyUserAccount\\AppData\\Local\\Google\\Chrome\\User Data");
driver = new ChromeDriver(opt);

// rest of my script goes here

The error

I am executing this using the command
node test.js
. This throws the following error on the first line:


ction (exports, require, module, __filename, __dirname) { opt = new chromeOpti
ReferenceError: chromeOptions is not defined
at Object.<anonymous> (\path\to\test.js:1:73)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:902:3

For what it's worth, if I skip setting options and replace the first four lines of the script with this, it works, but I can't set the options I need to set:

var webdriver = require('selenium-webdriver');
var driver = new webdriver.Builder().

I'm sure that I'm missing something really basic, but I can't figure this one out. How can I set options for Chrome using Selenium and node.js?

Edited to remove some obviously invalid syntax from the samples in some of the documentation I found.

Answer Source

The following works for me:

var webdriver = require("selenium-webdriver");
var chrome = require("selenium-webdriver/chrome");

// Make sure the PATH is set to find ChromeDriver. I'm on a Unix
// system. You'll need to adapt to whatever is needed for
// Windows. Actually, since you say that you can get a browser to show
// up if you don't try to specify options, your ChromeDriver is
// probably already on your PATH, so you can probably skip this.
process.env["PATH"] += ":/home/user/src/selenium/";

var options = new chrome.Options();

// Commented out because they are obviously not what you want.
// Uncomment and adapt as needed:
// options.setChromeBinaryPath("/tmp/foo");
// options.addArguments(["--blah"]);

var driver = new webdriver.Builder().


I've tested the code above with various values and found that it works.

If you want to see what else you can do with the Options object, you can open node_modules/selenium_webdriver/chrome.js and read the source. This is how I figured out the above method.