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

ChromeOptions使用Selenium ChromeDriver for node.js导致引用错误,node.js,google-chrome,selenium,selenium-chromedriver,Node.js,Google Chrome,Selenium,Selenium Chromedriver,我试图使用Selenium的ChromeDriver驱动程序来运行一些使用Chrome的测试,但是当我使用ChromeOptions时,我遇到了一个参考错误 我的代码 我想强制使用某些选项,例如针对特定的用户配置文件进行测试。基于Selenium和ChromeDriver文档,这是我的文件test.js: opt = new chromeOptions(); // ERROR OCCURS HERE! opt.setBinary("C:\\Program Files (x86)\\Google\

我试图使用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
错误 我正在使用命令
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
我肯定我错过了一些非常基本的东西,但我无法理解这一点。如何使用Selenium和node.js为Chrome设置选项


在我找到的一些文档中,为了从示例中删除一些明显无效的语法而进行了编辑。

这似乎是一个基本的OOP JavaScript误解

你的问题是:

ChromeOptions opts = new chromeOptions();
您不会以这种方式实例化对象。尝试:

var opt = new ChromeOptions();
以下是证据:

如果您运行它,我们将得到“意外标识符”。 取消对
var
位的注释,并对
Cat
位进行注释,然后查看其工作情况

编辑编辑后:


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

以下内容适合我:

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")
我用不同的值测试了上面的代码,发现它是有效的

如果您想了解如何使用
选项
对象,可以打开
节点_modules/selenium\u webdriver/chrome.js
并阅读源代码。这就是我如何想出上述方法的。

这对我很有效(从)


你能试试下面的解决方案吗

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")
var m_Options=new chrome.Options();
m_Options.addArguments(“--user data dir=C:/Users/israfil/AppData/Local/Google/Chrome/Profile 2”);
m_Options.addArguments(“--profile directory=Default”);
m_Options.addArguments(“--disable extensions”);
m_Options.addArguments(['user-agent=“Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/34.0.1847.11 Safari/537.36“');
m_Options.setBinaryPath(“H://project//nodejs//chrome//chrome.exe”);
m_Options.directConnect=false//挫折路径正确;
//m_Options.addExtensions();
//m_Options.setProxy();
//m_Options.headless();//Options.headless()}.#headless Options.headless()}Gpu支持正常
//m_Options.addArguments(“--blah”);//不使用此代码很重要
var driver=new webdriver.Builder().withCapabilities(webdriver.Capabilities.chrome()).setChromeOptions(m_选项).build();

对不起;我知道语法没有意义。尽管如此,在我发现的许多示例中,都声称显示了JavaScript示例代码(其中一些显然是真正的Java)。实际上,我修改了代码以使用您建议的版本(
var opts=new ChromeOptions();
),但忘了修复我的问题。我现在修改了这个问题以反映真正的错误。关于编辑:使用
ChromeOptions()
会抛出完全相同的错误。这是什么错误<代码>“ChromeOptions”未定义?是的,完全正确;唯一的区别是,当我更改代码时,大小写会发生变化。老实说,我不相信WebDriverJ中存在
ChromeOptions
类。。。对源头的搜索没有发现任何线索;这真的很接近。它使用我传递给它的选项(即,正确的配置文件)启动Chrome,但随后的
驱动程序.get(…)
和后续命令似乎没有任何作用。例如,它实际上并没有导航到google.com。有什么想法吗?哇。我从未见过这种行为。当我写下这个答案时,我的测试要么完全成功,要么在过程的早期就失败了,控制台上显示了一条有用的错误消息。唯一能立即想到的是确保你安装了最新的ChromeDriver。我几天前刚刚安装了ChromeDriver,实际上是昨天重新安装的。我将进一步讨论这个问题,因为你的答案似乎很有希望。好吧,我得出了以下结论:如果我加载的是一个用户配置文件而不是我自己的,那么它是有效的。如果我加载自己的,即使我尝试禁用扩展,它也不起作用;它似乎挂断了。有办法解决吗?对不起。我不知道。我从未尝试过使用我自己的个人资料。我使用Selenium来测试应用程序,这意味着测试环境必须是原始的。没有任何解释,不清楚这段代码是否为六年前的公认答案添加了任何内容。请花点时间来学习如何使用这个网站之前,张贴这样的答案。
//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();
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")