Селен 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();
}
})();