当前位置: 首页 > 知识库问答 >
问题:

在AWS Lambda上调试Selenium和Chromedriver(无法访问chrome)

陆运乾
2023-03-14

我有一个Lambda函数,用于部署无服务器框架的无头铬蟒蛇硒,在本地运行良好,但在lambda上崩溃。

一些基本的细节:(驱动程序信息:chromeDrive=2.41.578700 (2f1ed5f9343c13f73144538f15c00b370eda6706),平台=Linux4.14.231-180.360.amzn2。x86_64x86_64)

Chromium版本:89xx硒==3.141.0

下面是我如何用selenium调用它:

options = Options()
    options.binary_location = '/opt/headless-chromium'
    options.add_argument('--headless')
    options.add_argument('--no-sandbox')
    options.add_argument('--single-process')
    options.add_argument("--remote-debugging-port=9222")
    options.add_argument('--disable-dev-shm-usage')
        #'/opt/chromedriver' not found
    driver = webdriver.Chrome('/opt/chromedriver', chrome_options=options)

    driver.get('https://www.neaminational.org.au/')
    body = f"Headless Chrome Initialized, Page title: {driver.title}"

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

    response = {
        "statusCode": 200,
        "body": body
    }

我得到了神秘的消息:未知错误:Chrome未能启动:异常退出(铬无法到达)(进程从铬位置开始 /opt/headless-chromium不再运行,所以铬驱动程序假设Chrome已经崩溃。)。

现在我已经在我的Ubuntu18上测试过了(相同的chrome二进制文件,相同的chrome驱动程序,相同的安装selenium版本),它运行良好。。。因此,我的问题必须是与lambda amz linux环境的兼容性。

有人能告诉我如何解决这个问题吗?当不同的版本在本地看起来都是兼容的时候,尝试不同的版本似乎是愚蠢的。

非常感谢您的真知灼见!

共有1个答案

时仰岳
2023-03-14

我发现这真的很有帮助:

https://www.youtube.com/watch?v=jWqbYiHudt8

https://github.com/soumilshah1995/Selenium-on-AWS-Lambda-Python3.7

版本如下:

RUNTIME=python3.7

SELENIUM_VER=3.141.0
CHROME_BINARY_VER=v1.0.0-55 # based on Chromium 69.0.3497.81
CHROMEDRIVER_VER=2.43       # supports Chrome v69-71

荣誉归于苏米尔·尼廷·沙阿。

最好的

拉蒙

 类似资料:
  • 问题内容: 我正在使用Selenium Chrome Webdriver在Python 3中打开网页。我希望有一个可以打开网页的功能。我最初有: 我把它放在函数goTo()中 但是,我无法在该页面上执行该goTo函数之外的任何其他操作。尝试时出现错误: 有谁知道我该如何使用函数正确打开页面? 问题答案: 错误说明了一切: 您的主要问题是所使用的二进制文件之间的 版本兼容性 ,如下所示: 您正在使用

  • 问题内容: 我无法开始用。 它永远不会 失败,但会失败: 我正在使用( virtualenv installation)和(64b)。 编辑 降级为: 但是,可悲的是,结果仍然相同。 知道为什么会这样吗? 问题答案: 好的,所以解决方案 有点奇怪 。 我将二进制文件从(已安装的位置)移动到,更新了符号链接,它现在可以正常工作! 与问题本身相比,以下两行代码可以解决问题: 现在,我可以运行以下Pyt

  • 我得到以下错误。有人能帮帮我吗 Traceback(最近的调用为last):文件“index.py”,第38行,在浏览器中=webdriver.chrome(r“./chromeDriver”)#替换为>.firefox(),或使用您选择的浏览器文件“/usr/local/lib/python3.5/dist->packages/selenium/webdriver/chrome/webdrive

  • 问题内容: 我正在尝试在Ubuntu 16.10 Server上运行Selenium,但是却遇到了WebDriverException:消息:无法访问chrome(驱动程序信息:chromedriver 2.9.248304,平台= Linux 4.8.0-22-通用x86_64) Chrome已安装: 谷歌浏览器57.0.2987.110 问题答案: 添加一些镀铬选项有帮助!

  • 我面临着这个问题;我知道这个问题已经出现了,我已经尝试了上面提到的解决方案,因此用我的配置和代码问了这个问题。 之前的脚本正在运行,但现在没有,所以我试着制作一个基本的开放浏览器脚本。 Selenium WebDriver的最新版本:http://selenium-release.storage.googleapis.com/3.5/selenium-java-3.5.0.zip ChromeDr

  • 我希望我的程序打开默认的chrome配置文件,然后获得YouTube。我可以让它打开youtube(在新的chrome浏览器中),或者打开默认的chrome配置文件,但不能两者兼而有之。(不,我没有运行两个驱动变量) 当我运行获取chrome配置文件的驱动程序行时,我会得到错误: 回溯(最近的调用为last):文件“C:\users\myname\onedrive\documents\python