0
  • Firefox 版本:60.9.0esr(32 位)
  • 硒版本:3.141.0
  • Geckodriver 版本:0.24.0(32 位)

所以目前一切都在非无头模式下工作。但我需要在无 GUI 的 linux 服务器中运行这个 python 脚本(因此需要无头模式)。出于某种原因,我所有无头运行的尝试都会导致 selenium Web 驱动程序在初始化时超时。

        from selenium import webdriver

        geckoDriverFilepath = path + "geckodriver24_32.exe"

        opts = webdriver.FirefoxOptions()
        opts.add_argument("--headless")
        opts.add_argument("--width=2560")
        opts.add_argument("--height=1440")

        #initialize driver (breaks/timeouts here)
        driver = webdriver.Firefox(options=opts,executable_path=geckoDriverFilepath)

以下是回溯:

文件“c:\Users\xUser\Desktop\BOMWebService\Backend\code\FirefoxStarter.py”,第 51 行,在 StartFirefox 驱动程序 = webdriver.Firefox(options=opts,executable_path=geckoDriverFilepath)

文件“C:\Users\xUser\Desktop\BOMWebService\Backend\virEnvBOMBackend\lib\site-packages\selenium\webdriver\firefox\webdriver.py”,第 174 行,在init keep_alive=True)

文件“C:\Users\xUser\Desktop\BOMWebService\Backend\virEnvBOMBackend\lib\site-packages\selenium\webdriver\remote\webdriver.py”,第 157 行,在init self.start_session(capabilities, browser_profile)

文件“C:\Users\xUser\Desktop\BOMWebService\Backend\virEnvBOMBackend\lib\site-packages\selenium\webdriver\remote\webdriver.py”,第 252 行,在 start_session 响应 = self.execute(Command.NEW_SESSION,参数)

文件“C:\Users\xUser\Desktop\BOMWebService\Backend\virEnvBOMBackend\lib\site-packages\selenium\webdriver\remote\webdriver.py”,第 321 行,执行 self.error_handler.check_response(response)

文件“C:\Users\xUser\Desktop\BOMWebService\Backend\virEnvBOMBackend\lib\site-packages\selenium\webdriver\remote\errorhandler.py”,第 242 行,在 check_response 中引发 exception_class(消息、屏幕、堆栈跟踪)

selenium.common.exceptions.WebDriverException:消息:超时

任何指针将不胜感激。谢谢!

4

1 回答 1

0

此错误消息...

selenium.common.exceptions.WebDriverException: Message: timed out

...暗示GeckoDriver无法启动/产生新的WebBrowserFirefox 浏览器会话。

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

  • 您的Selenium 客户端版本是3.141.0,几乎有点旧。
  • 您的GeckoDriver版本是v0.24.0
  • 您的Firefox版本是v60.9.0esr

所以Selenium Client v3.141.0GeckoDriver v0.24.0Firefox Browser v60.9.0esr之间存在明显的不匹配


解决方案

  • 将Selenium升级到当前级别版本 3.141.59
  • 将GeckoDriver升级到GeckoDriver v0.26.0级别。
  • GeckoDriver 出现在所需位置。
  • GeckoDriver 对非 root 用户具有可执行权限。
  • 将Firefox版本升级到Firefox v70.0级别。
  • 通过IDE清理项目工作区并仅使用所需的依赖项重建项目。
  • 如果您的基本Web 客户端版本太旧,请卸载它并安装最新的 GA 和已发布版本的Web 客户端
  • 重新启动系统
  • Test以非 root 用户身份执行。
  • 始终driver.quit()tearDown(){}方法内调用以优雅地关闭和销毁WebDriverWeb 客户端实例。

在这里您可以找到关于给定 Geckodriver 版本支持哪些 Firefox 浏览器版本的详细讨论?

于 2019-11-20T07:22:30.320 回答