ChromeOptions使用Selenium ChromeDriver for node.js导致引用错误

我正在尝试使用Chrome的ChromeDriver驱动程序来运行一些使用Chrome的testing,但是当我使用ChromeOptions时候出现了一个引用错误。

我的代码

我想强制使用某些选项,例如针对特定的用户configuration文件进行testing。 基于Selenium和ChromeDriver文档,这是我的文件test.js

 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 

错误

我使用命令node test.js执行此操作。 这将在第一行中引发以下错误:

 \path\to\test.js:1 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 

对于它的价值,如果我跳过设置选项,并用这个replace脚本的前四行,它的工作原理,但我不能设置我需要设置的选项:

 var webdriver = require('selenium-webdriver'); var driver = new webdriver.Builder(). withCapabilities(webdriver.Capabilities.chrome()). build(); 

我敢肯定,我错过了一些非常基本的东西,但我无法弄清楚这一点。 我如何使用Selenium和node.js设置Chrome的选项?

编辑删除一些显然无效的语法从我发现的一些文档中的示例。

以下为我工作:

 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(). withCapabilities(options.toCapabilities()).build(); driver.get("http://www.google.com") 

我已经testing了以上各种值的代码,发现它的工作原理。

如果您想查看使用Options对象还可以做什么,可以打开node_modules/selenium_webdriver/chrome.js并读取源代码。 这是我如何找出上述方法。

这适用于我(从这个要点 )

 //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(); 

这似乎是OOP JavaScript的一个根本误区!

你的问题是:

 ChromeOptions opts = new chromeOptions(); 

你不这样实例化对象。 尝试:

 var opt = new ChromeOptions(); 

这里是certificate: http : //jsfiddle.net/q5Etk/

如果你运行这个,我们会得到“Unexpected Identifier”。 取消注释var位,并评论Cat cat位,看看它的工作。

编辑在您编辑之后:

您正在指定chromeOptions() 。 这是ChromeOptions()封顶C

Interesting Posts