在 python 上使用 selenium 加载 Firefox 浏览器时遇到问题。我做错了什么?

问题描述 投票:0回答:2

我在 python 上通过 Selenium 加载 Firefox 浏览器时遇到问题。

正在执行的代码如下。

from selenium import webdriver
from selenium.webdriver.firefox.service import Service as FirefoxService

service = FirefoxService(executable_path="./geckodriver",)
browser = webdriver.Firefox(service=service)
browser.get('http://selenium.dev/')

环境如下:

  1. 处理器:AMD® Ryzen 9 5900hx,带 radeon 显卡 × 10
  2. 操作系统:Ubuntu 22.04 64 位 - Gnome 42.5
  3. 通过 Snap 安装 Firefox 107.0.1 64 位
  4. Geckodriver v0.32.0-linux64
  5. Selenium 版本 4.7.2 [由 Poetry 1.2.2 安装]
  6. Python 版本 3.11.0
  7. webdriver-manager 库 v3.85 [由 Poetry 安装]

执行命令时的错误堆栈如下:

Traceback (most recent call last):
  File "/home/userhere/source_code/scraper/selenium_main.py", line 7, in <module>
    browser = webdriver.Firefox(service=service)
  File "/home/userhere/source_code/scraper/.venv/lib/python3.10/site-packages/selenium/webdriver/firefox/webdriver.py", line 197, in __init__
    super().__init__(command_executor=executor, options=options, keep_alive=True)
  File "/home/userhere/source_code/scraper/.venv/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 288, in __init__
    self.start_session(capabilities, browser_profile)
  File "/home/userhere/source_code/scraper/.venv/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 381, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/home/userhere/source_code/scraper/.venv/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 444, in execute
    self.error_handler.check_response(response)
  File "/home/userhere/source_code/scraper/.venv/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py", line 249, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Process unexpectedly closed with status 127

查看

geckodriver.log
,记录以下内容。

1670579048409   mozrunner::runner   INFO    Running command: "/snap/firefox/current/firefox.launcher" "--marionette" "--remote-debugging-port" "39445" "--remote-allow-hosts" "localhost" "-no-remote" "-profile" "/tmp/rust_mozprofilerrtoxk"
/snap/firefox/current/firefox.launcher: 46: exec: /snap/pycharm-community/310/usr/lib/firefox/firefox: not found

我能够本机运行 Firefox,确保

geckodriver
可执行并通过终端运行运行
geckodriver
,并等待通过提供的端口发出的请求。

我尝试了不同版本的

geckodriver
并更新了firefox。

我还尝试使用 webdriver-manager 来设置环境[代码如下]。

from selenium import webdriver

from selenium.webdriver.firefox.service import Service as FirefoxService
from webdriver_manager.firefox import GeckoDriverManager

service = FirefoxService(executable_path=GeckoDriverManager().install())

driver = webdriver.Firefox(service=service)

执行代码会产生以下错误跟踪。

[WDM] - Downloading: 19.0kB [00:00, 10.5MB/s]                   
Traceback (most recent call last):
  File "/home/userhere/source_code/scraper/selenium_main.py", line 8, in <module>
    driver = webdriver.Firefox(service=service)
  File "/home/userhere/source_code/scraper/.venv/lib/python3.10/site-packages/selenium/webdriver/firefox/webdriver.py", line 197, in __init__
    super().__init__(command_executor=executor, options=options, keep_alive=True)
  File "/home/userhere/source_code/scraper/.venv/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 288, in __init__
    self.start_session(capabilities, browser_profile)
  File "/home/userhere/source_code/scraper/.venv/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 381, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/home/userhere/source_code/scraper/.venv/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 444, in execute
    self.error_handler.check_response(response)
  File "/home/userhere/source_code/scraper/.venv/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py", line 249, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Process unexpectedly closed with status 127
python-3.x selenium firefox geckodriver
2个回答
0
投票

不完全确定,但这可能是由于您的 Firefox 浏览器版本与 Geckodriver Webdriver 版本不兼容造成的。


0
投票

我还无法证明这一点,但也许您可以尝试以与 Chrome 类似的方式获取 Firefox 的驱动程序安装程序。不要使用 ChromeService().install(),请考虑对 Firefox 使用 FirefoxService()。

© www.soinside.com 2019 - 2024. All rights reserved.