ChromeOptions使用Selenium ChromeDriver为node.js导致参考错误

eli*_*ide 7 selenium google-chrome node.js selenium-chromedriver

我正在尝试使用适用于Selenium的ChromeDriver驱动程序来使用Chrome运行一些测试,但我在使用时遇到了引用错误ChromeOptions.

我的守则

我想强制使用某些选项,例如针对特定用户配置文件测试它.根据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
Run Code Online (Sandbox Code Playgroud)

错误

我正在使用该命令执行此操作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
Run Code Online (Sandbox Code Playgroud)

对于它的价值,如果我跳过设置选项并用此替换脚本的前四行,它可以工作,但我无法设置我需要设置的选项:

var webdriver = require('selenium-webdriver');
var driver = new webdriver.Builder().
    withCapabilities(webdriver.Capabilities.chrome()).
    build();
Run Code Online (Sandbox Code Playgroud)

我确信我错过了一些非常基本的东西,但我无法想出这个.如何使用Selenium和node.js为Chrome设置选项?

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

Lou*_*uis 16

以下适用于我:

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")
Run Code Online (Sandbox Code Playgroud)

我用各种值测试了上面的代码,发现它有效.

如果您想查看Options对象可以执行的其他操作,可以打开node_modules/selenium_webdriver/chrome.js并阅读源代码.这就是我弄清楚上述方法的方法.


小智 6

您可以尝试下面的解决方案吗

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

/** 
 * Set chrome command line options/switches
*/      
var chromeOptions = new chrome.Options();
chromeOptions.addArguments("test-type");
chromeOptions.addArguments("start-maximized");
chromeOptions.addArguments("--js-flags=--expose-gc");
chromeOptions.addArguments("--enable-precise-memory-info");
chromeOptions.addArguments("--disable-popup-blocking");
chromeOptions.addArguments("--disable-default-apps");
chromeOptions.addArguments("--disable-infobars");

driver = new webdriver.Builder()
             .forBrowser("chrome")
             .setChromeOptions(chromeOptions)
             .build();

driver.get("http://www.google.com")
Run Code Online (Sandbox Code Playgroud)