我正在尝试使用Selenium的ChromeDriver驱动程序来使用Chrome运行某些测试,但是使用时出现参考错误ChromeOptions。
ChromeOptions
我想强制使用某些选项,例如针对特定的用户配置文件对其进行测试。根据Selenium和ChromeDriver文档,这是我的文件test.js:
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。这会在第一行上引发以下错误:
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
值得一提的是,如果我跳过设置选项,并以此替换脚本的前四行,则可以使用,但是我无法设置需要设置的选项:
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")
我已经使用各种值测试了上面的代码,并发现它可以工作。
如果要查看可以对该Options对象执行的其他操作,可以打开node_modules/selenium_webdriver/chrome.js并阅读源代码。这就是我找出上述方法的方式。
Options
node_modules/selenium_webdriver/chrome.js