当前位置: 首页 > 面试题库 >

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

邹麻雀
2023-03-14
问题内容

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


 类似资料:
  • 问题内容: tl; dr: 有人知道如何在不设置PATH环境变量的情况下,将chromedriver的路径传递给代码中的selenium- webdriver吗? 我正在尝试将selenium-webdriver与chrome一起使用,但宁愿不实际安装chromedriver并操纵路径。我有以下代码: 在路径中未设置chromedriver的情况下,将引发错误: 我不想设置路径,所以我从npm安装

  • 问题内容: 短 以下代码不能完全满足您的期望:https : //play.golang.org/p/sO4w4I_Lle 我以为我像往常一样弄乱了一些指针/引用的东西,但是我希望我的… …和… …以相同的方式运行(例如,更新作为第二个参数传递的引用)。 长 上面的示例是一个没有太多意义的最小复制器。这是为了使其能够在操场上工作。但是,一个不那么有意义的最小示例是: 想法是将YAML解组为(而不是

  • 问题内容: 关于此问题,有什么方法可以将[文件从ASP.NET应用程序直接上传到Amazon S3并具有进度条? -—编辑---- 两天后,仍然没有直接的运气。发现了一件看起来很有前途但又不是免费的东西:http : //www.flajaxian.com/ 使用Flash通过进度条直接上传到S3。 问题答案: 我也在寻找解决方案。也许这会有所帮助, 来自AWS Dev Commnity, 但在许

  • 问题内容: 使用require加载模块时可以传递参数吗? 我有提供登录功能的login.js模块。它需要数据库连接,并且我希望在所有模块中使用相同的数据库连接。现在,我导出一个函数login.setDatabase(…),该函数可让我指定数据库连接,并且工作正常。但是我宁愿在加载模块时传递数据库和其他要求。 我对NodeJS相当陌生,通常使用Java和Spring Framework进行开发,所以

  • 我写了这样的代码,但是这段代码没有运行chromedriver,我已经添加了文件(chromedriver.exe)和这个路径(\chromedrive\chromedriver.exe)。 . . 错误消息是: JAVAlang.Exception初始化错误 原因:java。lang.IllegalStateException:驱动程序可执行文件的路径必须由webdriver设置。铬。驱动系统属

  • 问题内容: 错误信息: “ chromedriver”可执行文件必须位于PATH中 我试图在pycharm中使用Selenium编写脚本,但是发生了以上错误。我已经将selenium链接到pycharm上(如此处所示)(最新)。 我是selenium的新手,不是“ selenium”文件夹中的chromedriver。如果不是,我在哪里可以找到它并将其添加到路径中? 顺便说一句,我尝试在cmd中键