ChromeOptions вызывает ошибку ссылки, используя Selenium ChromeDriver для node.js

Я пытаюсь использовать драйвер ChromeDriver для Selenium для запуска некоторых тестов с использованием 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();

Я уверен, что мне не хватает чего-то действительно простого, но я не могу понять это. Как я могу установить параметры для Chrome, используя Selenium и node.js?

Отредактировано для удаления некоторого заведомо неверного синтаксиса из примеров в части документации, которую я нашел.

4 ответа

Решение

Следующие работы для меня:

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 и прочитайте источник. Вот как я понял вышеупомянутый метод.

Не могли бы вы просто попробовать ниже решение

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")

Это работает для меня (из этой сути)

//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();

Это кажется фундаментальным недоразумением в ООП JavaScript!

Ваша проблема:

ChromeOptions opts = new chromeOptions();

Вы не создаете экземпляры объектов таким образом. Пытаться:

var opt = new ChromeOptions();

Вот доказательство: http://jsfiddle.net/q5Etk/

Если вы запустите это, мы получим "Неожиданный идентификатор". Раскомментируйте var немного и прокомментировать Cat cat немного и посмотреть, как это работает.

РЕДАКТИРОВАТЬ После редактирования:

Вы указываете chromeOptions(), Это ChromeOptions() ограничен C

         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();
            

Другие вопросы по тегам