WebDriverException:消息:参数无效:无法在 RaspberryPi3 上使用 GeckoDriver、Selenium 和 Python 终止退出的进程

新手上路,请多包涵

服务器:树莓派 3

操作系统:Dietpi - 版本 159

Geckodriver 版本:0.22 for arm

火狐版本:52.9.0

蟒蛇版本:3.5

硒版本:3.14.1

Gecko 是可执行文件,位于 /usr/local/bin/

 from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.firefox.options import Options
import time

options = Options()
options.set_headless(headless=True)
driver = webdriver.Firefox(firefox_options=options)

print('Need your login credential')
username = input('What is your username?:\n')
password = input('What is your password?:\n')
...
...

输出:

 root@RPi3:~# python3.5 ITE-bot.py
Traceback (most recent call last):
  File "ITE-bot.py", line 12, in <module>
    driver = webdriver.Firefox(firefox_options=options)
  File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/firefox/webdriver.py", line 174, in __init__
    keep_alive=True)
  File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: invalid argument: can't kill an exited process

知道有什么问题吗?我试过谷歌没有运气。

原文由 Chokoladekiks 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 343
2 个回答

拇指法则

浏览器在启动期间崩溃的一个常见原因是在 Linux 上以 root 用户 ( administrator ) 运行 WebDriver 启动的浏览器。虽然可以通过在创建 WebDriver 会话时传递 --no-sandbox 标志来解决此问题,但这种配置不受支持且非常不鼓励。您需要将环境配置为以普通用户身份运行浏览器。


这个错误信息…

 selenium.common.exceptions.WebDriverException: Message: invalid argument: can't kill an exited process

…暗示 GeckoDriver 无法启动/生成新的 WebBrowsing 会话,即 Firefox 浏览器 会话。

您的主要问题是您使用的二进制文件版本之间 不兼容,如下所示:

  • 您的 GeckoDriver 版本是 0.22.0

  • GeckoDriver v0.21.0 (2018-06-15) 的发行说明明确提到以下内容:

  • Firefox 57(及更高版本)

  • Selenium 3.11(及更高版本)

  • 您的 Firefox 版本是 52.9.0

所以 GeckoDriver v0.22.0Firefox Browser v57 之间存在明显的不匹配


解决方案

  • GeckoDriver 升级到 GeckoDriver v0.22.0 级别。
  • GeckoDriver 存在于指定位置。
  • GeckoDriver 对 非 root 用户具有可执行权限。
  • Firefox 版本升级到 Firefox v62.0.2 级别。
  • 通过您的 IDE 清理 您的 _项目工作区_,并仅使用所需的依赖 项重建 您的项目。
  • 如果您的基本 Web 客户端 版本太旧,则通过 Revo Uninstaller 卸载它并安装最新的 GA 和发布版本的 _Web 客户端_。
  • 非 root 用户 身份执行您的 _Selenium 测试_。

GeckoDriverSeleniumFirefox 浏览器 兼容性图表

geckodriver_versions

原文由 undetected Selenium 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果您在没有显示器的系统上运行 Firefox,请确保您使用无头模式。

 from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
options.headless = True
driver = webdriver.Firefox(options=options)

此外,请确保您拥有兼容版本的 Firefox、Selenium 和 Geckodriver: https ://firefox-source-docs.mozilla.org/testing/geckodriver/Support.html

原文由 NFern 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题