【问题标题】:/opt/chromedriver unexpectedly exited. Status code was 127\n/opt/chromedriver 意外退出。状态码是 127\\n
【发布时间】:2022-08-23 19:07:06
【问题描述】:

我在 aws lambda 中使用 selenium 运行 python 脚本。我为 selenium 创建了 2 层,为 chromedriver 和 headless-chromium 创建了 1 层。执行时我收到错误

Response
{
  \"errorMessage\": \"Message: Service /opt/chromedriver unexpectedly exited. Status code was: 127\\n\",
  \"errorType\": \"WebDriverException\",
  \"stackTrace\": [
    \"  File \\\"/var/task/lambda_function.py\\\", line 36, in lambda_handler\\n    driver = webdriver.Chrome(options=options, executable_path=chromedriver_path, desired_capabilities=d,)\\n\",
    \"  File \\\"/opt/python/lib/python3.8/site-packages/selenium/webdriver/chrome/webdriver.py\\\", line 70, in __init__\\n    super(WebDriver, self).__init__(DesiredCapabilities.CHROME[\'browserName\'], \\\"goog\\\",\\n\",
    \"  File \\\"/opt/python/lib/python3.8/site-packages/selenium/webdriver/chromium/webdriver.py\\\", line 89, in __init__\\n    self.service.start()\\n\",
    \"  File \\\"/opt/python/lib/python3.8/site-packages/selenium/webdriver/common/service.py\\\", line 98, in start\\n    self.assert_process_still_running()\\n\",
    \"  File \\\"/opt/python/lib/python3.8/site-packages/selenium/webdriver/common/service.py\\\", line 110, in assert_process_still_running\\n    raise WebDriverException(\\n\"
  ]
}

我正在使用python 3.8版。从https://github.com/adieuadieu/serverless-chrome/releases?page=1 下载最新版本 v1.0.0-57 headless-chromium 此 chromium 的 ChromeDriver 版本为 https://chromedriver.storage.googleapis.com/index.html?path=86.0.4240.22/

我正在使用本教程部署到 lambda https://dev.to/awscommunity-asean/creating-an-api-that-runs-selenium-via-aws-lambda-3ck3 本教程使用 python3.6 但我想使用更新的版本。

在这里发布我的 lambda 函数

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

def lambda_handler(event, context):
    print(\"Launching browser\")
    options = webdriver.ChromeOptions()
    options.add_argument(\'--headless\')
    options.add_argument(\"--no-sandbox\")
    options.add_argument(\"--log-level=1\")
    options.add_argument(\"--start-maximized\")
    options.binary_location = \"/opt/headless-chromium\"
    chromedriver_path = \"/opt/chromedriver\"
    driver = webdriver.Chrome(options=options, executable_path=chromedriver_path)

    driver.get(\'https://www.google.com/\')

    driver.close();
    driver.quit();

    response = {
        \"statusCode\": 200,
        \"body\": \"Selenium Headless Chrome Initialized\"
    }

    return response

提前致谢。

    标签: python-3.x selenium selenium-webdriver aws-lambda selenium-chromedriver


    【解决方案1】:

    根据这个answer Chrome 需要安装额外的库才能工作。通过在这个 AWS blog post 之后为 lambda 创建一个 docker 容器,我能够让 selenium 在 AWS lambda 上工作。

    【讨论】:

      猜你喜欢
      • 2018-08-25
      • 2019-05-31
      • 2019-05-07
      • 2018-03-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-27
      • 2020-09-18
      相关资源
      最近更新 更多