node modules javascriptexecutor javascript node.js selenium selenium-chromedriver

javascript - modules - Pasar require(''chromedriver).ruta directamente a Selenium-webdriver



selenium webdriver js (2)

tl; dr: ¿Alguien sabe cómo pasar la ruta de chromedriver a selenium-webdriver en el código sin configurar la variable de entorno PATH?

Estoy intentando usar Selenium-webdriver con Chrome, pero preferiría no instalarlo físicamente y manipular el camino. Tengo el siguiente código:

var webdriver = require(''selenium-webdriver''); var driver = new webdriver.Builder(). withCapabilities(webdriver.Capabilities.chrome()). build();

Sin Chromedriver establecido en la ruta, esto arroja el error:

Error: The ChromeDriver could not be found on the current PATH. Please download the latest version of the ChromeDriver from http://chromedriver.storage.googleapis.com/index.html and ensure it can be found on your PATH.

Preferiría no tener que configurar mi ruta, así que instalé chromedriver desde npm y lo agregué a mi package.json:

"scripts": { "preinstall-chromedriver": "npm install", "install-chromedriver": "node node_modules/chromedriver/install.js", "pretest_e2e": "npm run install-chromedriver", "test_e2e": "node release/test/rune2e.js" },

Ahora tengo Chromedriver instalado y puedo obtener la ruta con require(''chromedriver'').path , pero no tengo forma de pasar esto al Selenium-webdriver. ¿Nadie sabe?


Necesitas crear y configurar tu propio servicio de Chrome predeterminado.

var webdriver = require(''selenium-webdriver''); var chrome = require(''selenium-webdriver/chrome''); var path = require(''chromedriver'').path; var service = new chrome.ServiceBuilder(path).build(); chrome.setDefaultService(service); var driver = new webdriver.Builder() .withCapabilities(webdriver.Capabilities.chrome()) .build();


También puedes hacer esto:

require(''chromedriver''); const webdriver = require(''selenium-webdriver''); const driver = new webdriver.Builder() .withCapabilities(webdriver.Capabilities.chrome()) .build();