繁体   English   中英

Selenium Nodejs CHROMEDRIVER 路径

[英]Selenium Nodejs CHROMEDRIVER path

尝试使用“npm install selenium-webdriver”我仍然收到以下错误。 知道路径在哪里吗?

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.
    at Error (<anonymous>)
    at new ServiceBuilder (/var/www/nodejs/node_modules/selenium-webdriver/chrome.js:51:11)
    at getDefaultService (/var/www/nodejs/node_modules/selenium-webdriver/chrome.js:216:22)
    at new Driver (/var/www/nodejs/node_modules/selenium-webdriver/chrome.js:470:32)
    at Builder.build (/var/www/nodejs/node_modules/selenium-webdriver/builder.js:302:14)
    at Object.handle (/var/www/nodejs/node.js:31:4)
    at next_layer (/var/www/nodejs/node_modules/express/lib/router/route.js:103:13)
    at Route.dispatch (/var/www/nodejs/node_modules/express/lib/router/route.js:107:5)
    at c (/var/www/nodejs/node_modules/express/lib/router/index.js:195:24)
    at Function.proto.process_params (/var/www/nodejs/node_modules/express/lib/router/index.js:251:12)

好的,假设您使用的是 Windows,请尝试以下步骤:

  • 从这里下载最新版本的 ChromeDriver ChromeDriver

  • 解压缩 zip 并将内容放在您知道的位置,例如“C:\\Users\\UserName\\AppData\\ChromeDriver”

  • 转到您的控制面板 -> 系统 -> 编辑系统变量。 单击“环境变量”按钮。

  • 在系统变量框中将有一个名为“Path”的变量,选择它并单击编辑。 将您下载的 chromedriver.exe 的包含目录的路径复制并粘贴到变量值的末尾,并以分号结束。

  • 再次单击确定关闭环境变量,再次单击关闭系统属性。

  • 关闭并重新打开终端窗口。

  • 再次运行命令。

我希望这有助于-有一个很好的教程 在这里

即使在系统变量中添加驱动程序路径后,它也不起作用。

但是通过创建和设置自己的默认 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();

你只需要安装npm install selenium-webdriver 然后从这里下载 chromedriver。

const path = require('path');
const { ServiceBuilder } = require('selenium-webdriver/chrome');
const { Builder } = require('selenium-webdriver');

const geckoDriverPath = path.join(__dirname, "geckodriver"); // or wherever you've your geckodriver
const serviceBuilder = new ServiceBuilder(geckoDriverPath);
const SeleniumDriver = await new Builder()
  .forBrowser('chrome')
  .setFirefoxService(serviceBuilder)
  .build();

我想用我的npm install命令下载chromedriver ,所以我从 npm 安装了chromedriver

npm install --save chromedriver

但是后来我遇到了如何设置路径的问题,我最终回答了这个问题。

如果你也使用这种方法,根据npm-chromedriver docs你可以做

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

它确实按我的预期工作,请注意 chromedriver 不是通过将require结果分配给变量来导入的,而是按原样导入

您可以将浏览器驱动程序放在存储执行代码的同一位置。

希望能帮助到你

就我而言,我的终端在设置 PATH 之前已经打开。 所有解决方案都失败了,直到我最终重新启动了终端。

安装chromedriver

npm install --save-dev chromedriver

const chrome = require('selenium-webdriver/chrome');
const {Builder, By, Key, until,Capabilities} = require('selenium-webdriver');
const geckoDriverPath  = require('chromedriver').path;

let service = new chrome.ServiceBuilder(geckoDriverPath ).build();
chrome.setDefaultService(service);

(async function example() {
    let driver = await new Builder().withCapabilities(Capabilities.chrome()).build();
    try {
        await driver.get('https://www.baidu.com/');
        await driver.findElement(By.name('wd')).sendKeys('webdriver', Key.RETURN);
        await driver.wait(until.titleIs('webdriver_百度搜索'), 1000);
        console.log('ok')
     } finally {
        await driver.quit();
     }
  })();

在 MacOSX 下,这个问题很可能是由 ~ 错误扩展到 hme 目录引起的。 设置绝对路径而不是依赖 ~ 并且它有效; 至少在我的电脑上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM