通过要求('chromedriver).path直接到seleniumwebdriver

tl; dr: 有没有人知道如何通过chromedriver的pathselenium代码webdriver代码没有设置PATH环境variables?

我试图使用铬的seleniumwebdriver,但宁愿不物理安装chromedriver和操纵path。 我有以下代码:

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

如果没有在path上设置的chromedriver,这会引发错误:

 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. 

我宁愿不必设置我的path,所以我已经从npm安装了chromedriver,并添加到我的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" }, 

现在我已经安装了chromedriver,并且可以通过require('chromedriver').path ,但是我无法将其传递给selenium-webdriver。 有人知道吗?

您需要创build并设置您自己的默认镶边服务。

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

你也可以这样做:

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