ChromeOptions使用Selenium ChromeDriver for node.js导致引用错误
我试图使用Selenium的ChromeDriver驱动程序来运行一些使用Chrome的测试,但是当我使用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\
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()
cappedC
以下内容适合我:
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")