【问题标题】:where to place the chromedriver in aws lambda在 aws lambda 中放置 chromedriver 的位置
【发布时间】:2019-09-24 09:05:15
【问题描述】:

我正在使用 python 3.7 进行网络抓取项目。 在 windows 中使用 selenium 和 chromediver.exe 在 python 中完成代码,它工作正常。 我们在 aws lambda 中添加脚本。 问题是我们需要指定Linux的chrome驱动。

我按照https://github.com/yai333/Selenium-UI-testing-with-AWS-Lambda-Layers中的步骤操作。

我没有使用任何无服务器 yml sript(我也不知道)。 执行以下操作

我们有一台 Linux 机器。 创建一个虚拟 python 环境并添加 selenium 模块(如 aws https://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html#python-package 中所述-venv) 将 chromdriver 和 headless 下载到一个文件夹中(大小很大,所以上传到 S3)将(chrome 驱动程序和 python 库)都添加为层。 将 handler.py(在 https://github.com/yai333/Selenium-UI-testing-with-AWS-Lambda-Layers 中)粘贴到 lambdahandler 文件中。 创建一个示例测试,然后单击测试。 显示错误: 错误消息“chromedriver”可执行文件需要在路径中

我可以在 S3 中上传 chrome 驱动并显示路径吗?

【问题讨论】:

    标签: python selenium-chromedriver


    【解决方案1】:

    刚刚解决了这个问题几个小时,我想我可以提供帮助。

    在您的 Lambda 层中,您需要在 /bin 下包含 chromedriver 二进制文件。操作系统看起来像:

    layerZip/
    |- bin/
       |- chromedriver
    

    在您的 lambda 函数的基础架构中,它将存在于 /opt/bin/chromedriver。因此,我们需要将 Python 指向它作为可执行文件。为了让它工作,我必须添加以下内容:

    from selenium import webdriver
    
    chrome_options = webdriver.ChromeOptions()
    chrome_options.binary_location = "/opt/bin/chromedriver"
    driver = webdriver.Chrome(executable_path="opt/bin/chromedriver", options=chrome_options)
    

    【讨论】:

    • 我应该补充一点,我不相信您需要 chrome_options.binary_location 部分。我也不确定 chromedriver 是否需要出现在 /bin 下,可以只出现在顶层的 layer.zip 中。在这种情况下,我认为它会出现在 /opt/chromedriver。这是漫长的一天,我的用户名现在真的很有用。
    猜你喜欢
    • 1970-01-01
    • 2019-08-03
    • 2022-10-02
    • 2018-11-20
    • 2015-07-09
    • 2020-06-27
    • 1970-01-01
    • 2018-06-02
    • 2018-06-02
    相关资源
    最近更新 更多