javascript - 将 require('chromedriver).path 直接传递给 selenium-webdriver

标签 javascript node.js selenium selenium-chromedriver

tl;dr: 有谁知道如何在不设置 PATH 环境变量的情况下在代码中将 chromedriver 的路径传递给 selenium-webdriver?

我正在尝试将 selenium-webdriver 与 chrome 一起使用,但不希望物理安装 chromedriver 并操纵路径。我有以下代码:

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

没有在路径中设置 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.

我不想设置我的路径,所以我从 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。有人知道吗?

最佳答案

您需要创建和设置自己的默认 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();

关于javascript - 将 require('chromedriver).path 直接传递给 selenium-webdriver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27733731/

相关文章:

javascript - 如何获取 django View 的 url 字符串?

javascript - 通过 jquery 将图像附加到 <td>

javascript - 如何使用 JavaScript 在新窗口中插入滚动条?

node.js - 在Cosmos DB中使用回送

javax.json 产生难以理解的 json

c# - 如何使用 selenium 3.141.0 在 4.0.0 版上初始化 appium android 驱动程序

php - jQuery 和返回的 HTML

javascript - 无法找到nodejs加密代码的浏览器js代码

python - 如何从 Python (selenium) 中的 span 类中获取特定文本

java - Maven 项目不会在 selenium 项目的 test-output 文件夹中生成 testng 结果