【发布时间】: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