jt0*_*000 17 javascript selenium node.js selenium-chromedriver
tl; dr: 有没有人知道如何在不设置PATH环境变量的情况下将chromedriver的路径传递给代码中的selenium-webdriver?
我正在尝试使用带有铬的selenium-webdriver,但更愿意不在物理上安装chromedriver并操纵路径.我有以下代码:
var webdriver = require('selenium-webdriver');
var driver = new webdriver.Builder().
withCapabilities(webdriver.Capabilities.chrome()).
build();
Run Code Online (Sandbox Code Playgroud)
如果没有在路径中设置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.
Run Code Online (Sandbox Code Playgroud)
我不想设置我的路径,所以我从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"
},
Run Code Online (Sandbox Code Playgroud)
现在我已经安装了chromedriver并且可以获得路径require('chromedriver').path
,但我无法将其传递给selenium-webdriver.谁知道?
jt0*_*000 41
您需要创建并设置自己的默认Chrome服务.
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();
Run Code Online (Sandbox Code Playgroud)
你也可以这样做:
require('chromedriver');
const webdriver = require('selenium-webdriver');
const driver = new webdriver.Builder()
.withCapabilities(webdriver.Capabilities.chrome())
.build();
Run Code Online (Sandbox Code Playgroud)