Selenium Webdriver под AWS Lambda Layer завершает функцию - PullRequest
1 голос
/ 10 июля 2019

Я пытаюсь выполнить селен в AWS Lambda. Это работает успешно, если я загружаю .zip непосредственно в функцию Lambda, но не если я использую Lambda Layer. Я получаю ошибку ниже:

Ошибка: сервер преждевременно завершил работу со статусом 127 at 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();
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...