Селен Nodejs Путь CHROMEDRIVER

Пробовал "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)

Ответ 1

Хорошо, если вы используете Windows, попробуйте выполнить следующие действия:

  • Загрузите последнюю версию ChromeDriver здесь ChromeDriver

  • Извлеките zip и поместите содержимое где-нибудь, где вы знаете, где это, например, "C:\Users\UserName\AppData\ChromeDriver"

  • Перейдите в Панель управления → Система → Изменить системные переменные. Нажмите кнопку "переменные среды".

  • В поле системных переменных будет указана переменная с именем "Путь" и нажмите "Изменить". Скопируйте и вставьте путь к содержащемуся каталогу файла chromedriver.exe, который вы загрузили в конец значения переменной, и завершите его с помощью двоеточия.

  • Нажмите ok и еще раз, чтобы закрыть переменные среды и снова закрыть свойства системы.

  • Закройте и закройте окно терминала.

  • Выполните команду еще раз.

Я надеюсь, что это помогает - есть хороший учебник здесь

Ответ 2

Даже после добавления пути к драйверу в системные переменные он не работал.

Но, создав и установив собственный сервис 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();

Ответ 3

Вам нужно только установить npm install selenium-webdriver. Затем загрузите хромедривер отсюда.

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

Ответ 4

В MacOSX проблема скорее всего будет вызвана неправильным расширением ~ в каталоге hme. Установите абсолютный путь вместо того, чтобы полагаться на ~, и он работает; по крайней мере, на моем компьютере.

Ответ 5

установить хромедрайвер

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