繁体   English   中英

Selenium Firefox Python 在无头模式下运行 初始化驱动程序超时

[英]Selenium Firefox Python running in headless mode Timeout on initializing driver

  • Firefox 版本:60.9.0esr(32 位)
  • Selenium 版本: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:消息:超时

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

此错误消息...

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

...意味着GeckoDriver无法启动/生成新的WebBrowser ,即Firefox 浏览器session。

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

  • 您的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 客户端
  • 重新启动系统
  • 以非 root 用户身份执行您的Test
  • 始终在tearDown(){}方法中调用driver.quit()以优雅地关闭和销毁WebDriverWeb 客户端实例。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM