我正在尝试在AWS Lambda中执行硒。如果我将.zip直接上载到Lambda函数,则它成功运行,但是如果我使用Lambda Layer,则不能成功。我在下面看到错误:
错误:服务器提前终止,状态为127 在earlyTermination.catch.e(/opt/nodejs/node8/node_modules/selenium-webdriver/remote/index.js:252:52)
我在/ lib文件夹下拥有所有可执行文件。 Chrome和Chromedriver可执行文件在/ lib中,libgconf-2.so.4,libORBit-2.so.0,libosmesa.so
我在“层”中的文件夹结构是 nodejs / node8 / node_modules , nodejs / node8 / node_modules / lib 。
'use strict';
exports.handler = (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("/opt/nodejs/node8/lib/chrome");
chromeOptions.addArguments(defaultChromeFlags);
builder.setChromeOptions(chromeOptions);
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();
};