Когда я запускаю свой nodejs 12.x код, вызывающий селен, я получаю сообщение об ошибке ниже.
На верхнем уровне моей структуры каталогов у меня есть индекс. js файл, Папка lib и папка node_modules.
Я готовлю код на Ma c, а затем архивирую его, загружаю на S3 и запускаю в Lambda.
Где должны быть мои исполняемые файлы chrome и chromedriver? Я не думаю, что могу использовать npm для их установки, так как я думаю, что мне нужны версии linux для работы в Lambda?
Это ошибка, которую я получаю:
{"errorType": "Error", "errorMessage": "ChromeDriver не найден в текущей переменной PATH. Загрузите последнюю версию ChromeDriver с http://chromedriver.storage.googleapis.com/index.html и убедитесь, что его можно найти в вашей переменной PATH. "," trace ": [" Ошибка: не удалось найти ChromeDriver в текущей переменной PATH. Загрузите последнюю версию ChromeDriver с http://chromedriver.storage.googleapis.com/index.html и убедитесь, что можно найти в вашем PATH. "," в новом ServiceBuilder (/var/task/node_modules/selenium-webdriver/chrome.js:232:13) "," в getDefaultService (/ var / task / node_modules /) selenium-webdriver / chrome. js: 321: 22) "," в Function.createSession (/var/task/node_modules/selenium-webdriver/chrome.js:695:44) "," в createDriver (/var/task/node_modules/selenium-webdriver/index.js:155:33) "," в Builder.build (/ var / task / node_modules / sel enium-webdriver / index. js: 662: 16) "," в Runtime.exports.handler (/var/task/index.js:38:26) "," в Runtime.handleOnce (/ var / время выполнения / время выполнения. js: 66: 25) "]}
Это мой код
'use strict';
exports.handler = async (event, context, callback) => {
var webdriver = require('selenium-webdriver');
var chrome = require('selenium-webdriver/chrome');
var builder = new webdriver.Builder().forBrowser('chrome');
var chromeOptions = new chrome.Options();
const defaultChromeFlags = [
'--headless',
'--disable-gpu',
'--window-size=1280x1696', // Letter size
'--no-sandbox',
'--user-data-dir=/tmp/user-data',
'--hide-scrollbars',
'--enable-logging',
'--log-level=0',
'--v=99',
'--single-process',
'--data-path=/tmp/data-path',
'--ignore-certificate-errors',
'--homedir=/tmp',
'--disk-cache-dir=/tmp/cache-dir'
];
chromeOptions.setChromeBinaryPath("/var/task/lib/chrome");
chromeOptions.addArguments(defaultChromeFlags);
builder.setChromeOptions(chromeOptions);
//*****this is the problem line****//
var driver = builder.build();
driver.get(event.url);
driver.getTitle().then(function(title) {
console.log("Page title for " + event.url + " is " + title)
callback(null, 'Page title for ' + event.url + ' is ' + title);
});
driver.quit();
};