简体   繁体   English

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

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

  • Firefox version: 60.9.0esr (32-bit) Firefox 版本:60.9.0esr(32 位)
  • Selenium version: 3.141.0 Selenium 版本:3.141.0
  • Geckodriver version: 0.24.0 (32-bit) Geckodriver 版本:0.24.0(32 位)

So everything currently works in non-headless mode.所以目前一切都在非无头模式下工作。 But I need to run this python script in a GUI-less linux server (thus need headless mode).但我需要在无 GUI 的 linux 服务器中运行这个 python 脚本(因此需要无头模式)。 For some reason, all my attempts to run headlessly results in selenium web driver timing out on initialization.出于某种原因,我所有无头运行的尝试都会导致 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)

The following is the Traceback:以下是回溯:

File "c:\Users\xUser\Desktop\BOMWebService\Backend\code\FirefoxStarter.py", line 51, in StartFirefox 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)

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

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

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

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

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

selenium.common.exceptions.WebDriverException: Message: timed out selenium.common.exceptions.WebDriverException:消息:超时

Any pointers would be much appreciated.任何指针将不胜感激。 Thanks!谢谢!

This error message...此错误消息...

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

...implies that the GeckoDriver was unable to initiate/spawn a new WebBrowser ie Firefox Browser session. ...意味着GeckoDriver无法启动/生成新的WebBrowser ,即Firefox 浏览器session。

Your main issue is the incompatibility between the version of the binaries you are using as follows:您的主要问题是您使用的二进制文件版本之间的不兼容,如下所示:

  • Your Selenium Client version is 3.141.0 which is almost a bit older.您的Selenium 客户端版本是3.141.0 ,几乎有点旧。
  • Your GeckoDriver version is v0.24.0 .您的GeckoDriver版本是v0.24.0
  • Your Firefox version is v60.9.0esr .您的Firefox版本是v60.9.0esr

So there is a clear mismatch between Selenium Client v3.141.0 , GeckoDriver v0.24.0 and the Firefox Browser v60.9.0esr因此Selenium Client v3.141.0GeckoDriver v0.24.0Firefox Browser v60.9.0esr之间存在明显的不匹配


Solution解决方案

  • Upgrade Selenium to current levels Version 3.141.59 .Selenium升级到当前级别版本 3.141.59
  • Upgrade GeckoDriver to GeckoDriver v0.26.0 level.GeckoDriver升级到GeckoDriver v0.26.0级别。
  • GeckoDriver is present in the desired location. GeckoDriver 出现在所需位置。
  • GeckoDriver is having executable permission for non-root users. GeckoDriver 对非 root 用户具有可执行权限。
  • Upgrade Firefox version to Firefox v70.0 levels.Firefox版本升级到Firefox v70.0级别。
  • Clean your Project Workspace through your IDE and Rebuild your project with required dependencies only.通过您的IDE清理您的项目工作区,并仅使用所需的依赖项重建您的项目。
  • If your base Web Client version is too old, then uninstall it and install a recent GA and released version of Web Client .如果您的基础Web 客户端版本太旧,请卸载它并安装最新的 GA 和发布版本的Web 客户端
  • Take a System Reboot .重新启动系统
  • Execute your Test as a non-root user.以非 root 用户身份执行您的Test
  • Always invoke driver.quit() within tearDown(){} method to close & destroy the WebDriver and Web Client instances gracefully.始终在tearDown(){}方法中调用driver.quit()以优雅地关闭和销毁WebDriverWeb 客户端实例。

Here you can find a detailed discussion on Which Firefox browser versions supported for given Geckodriver version?在这里您可以找到关于给定 Geckodriver 版本支持哪些 Firefox 浏览器版本的详细讨论?

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

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