我正在尝试使用适用于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
对于它的价值,如果我跳过设置选项并用此替换脚本的前四行,它可以工作,但我无法设置我需要设置的选项:
var webdriver = require('selenium-webdriver');
var driver = new webdriver.Builder().
withCapabilities(webdriver.Capabilities.chrome()).
build();
我确定我错过了一些非常基本的东西,但我无法想出这一点。如何使用Selenium和node.js为Chrome设置选项?
编辑从我发现的一些文档中的示例中删除了一些明显无效的语法。
答案 0 :(得分:14)
以下适用于我:
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
并阅读源代码。这就是我弄清楚上述方法的方法。
答案 1 :(得分:0)
这似乎是一个基本的OOP JavaScript误解!
你的问题是:
ChromeOptions opts = new chromeOptions();
您不以这种方式实例化对象。尝试:
var opt = new ChromeOptions();
这是证据: http://jsfiddle.net/q5Etk/
如果你运行它,我们会得到“意外的标识符”。
取消注释var
位并注释Cat cat
位并查看它是否有效。
编辑编辑后:
您正在指定chromeOptions()
。这是ChromeOptions()
上限C
答案 2 :(得分:0)
请你试试下面的解决方案
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")
答案 3 :(得分:-1)
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, like Gecko) Chrome/34.0.1847.11 Safari/537.36"']);
m_Options.setBinaryPath("H://project//nodejs//chrome//chrome.exe");
m_Options.directConnect = false; //setBinaryPath true;
//m_Options.addExtensions();
//m_Options.setProxy();
//m_Options.headless();// Options.headless()}.#headless Options.headless()} Gpu Support ok
//m_Options.addArguments(" --blah"); // not use this codes Importent
var driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.chrome()).setChromeOptions(m_Options).build();