WebDriverException:“进程意外关闭,状态为 255” - selenium/geckodriver/AWS lambda - Python

Nou*_*MEZ 8 python firefox selenium aws-lambda geckodriver

我目前正在 aws lambda (无服务器) 上开发一个网络抓取项目

技术人员:

蟒蛇3

硒3.14

geckodriver-V0.29

Firefox 80.0(en 模式无头)

这是我实现的代码(知道我事先配置了 firefox 和 geckodriver 的路径):

from selenium import webdriver
from selenium.webdriver.firefox.options import Options as FirefoxOptions
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

options = FirefoxOptions()
options.add_argument("--headless")
binary = FirefoxBinary("/tmp/bin/firefox/firefox")

webdriver.Firefox(options=options,executable_path="/tmp/bin/geckodriver", firefox_binary=binary)
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

Message: Process unexpectedly closed with status 255
: WebDriverException
Traceback (most recent call last):
  File "/var/task/src/lambda_function.py", line 8, in lambda_handler
    driver = WebDriverWrapper()
  File "/var/task/src/webdriver_wrapper.py", line 116, in __init__
    self._driver = webdriver.Firefox(options=options,executable_path="/tmp/bin/geckodriver", firefox_binary=binary)
  File "/var/task/lib/selenium/webdriver/firefox/webdriver.py", line 174, in __init__
    keep_alive=True)
  File "/var/task/lib/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/var/task/lib/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/var/task/lib/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/var/task/lib/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Process unexpectedly closed with status 255
Run Code Online (Sandbox Code Playgroud)

我搜索了论坛和文章,但没有找到解决方案。有没有人遇到过这种问题,如果可能的话如何纠正?

Mat*_*ini 16

这些天我也遇到了同样的问题,显然是因为 Firefox 可执行文件是直接从 docker 容器内的链接下载的,而该容器没有一组 Firefox 需要工作的库。因此,为了解决这个问题,我必须将以下行添加到Dockerfile中。

RUN apt-get update && apt-get install -y wget bzip2 libxtst6 libgtk-3-0 libx11-xcb-dev libdbus-glib-1-2 libxt6 libpci-dev && rm -rf /var/lib/apt/lists/*
Run Code Online (Sandbox Code Playgroud)

为了测试缺少哪些库,我连接到 docker 容器并尝试按以下方式运行 Firefox:

firefox -headless
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你,这对我真的很有帮助!:) 不过,有一个建议:使用 `libgtk-3-0` 而不是 `packagekit-gtk3-module` 就足够了,因为后者会引入大量额外的依赖项。 (2认同)

小智 2

这是关于 Firefox 的问题。尝试将 Firefox 更新到最新版本。我认为 Firefox 80.0 与 geckodriver v0.29 不兼容