Selenium Firefox Python 在无头模式下运行超时初始化驱动程序
Posted
技术标签:
【中文标题】Selenium Firefox Python 在无头模式下运行超时初始化驱动程序【英文标题】:Selenium Firefox Python running in headless mode Timeout on initializing driver 【发布时间】:2020-03-15 13:42:31 【问题描述】: 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)
以下是Traceback:
文件“c:\Users\xUser\Desktop\BOMWebService\Backend\code\FirefoxStarter.py”,第 51 行,在 StartFirefox 中 driver = webdriver.Firefox(options=opts,executable_path=geckoDriverFilepath)
init 中的文件“C:\Users\xUser\Desktop\BOMWebService\Backend\virEnvBOMBackend\lib\site-packages\selenium\webdriver\firefox\webdriver.py”,第 174 行 keep_alive=True)
init 中的文件“C:\Users\xUser\Desktop\BOMWebService\Backend\virEnvBOMBackend\lib\site-packages\selenium\webdriver\remote\webdriver.py”,第 157 行 self.start_session(capabilities, browser_profile)
文件“C:\Users\xUser\Desktop\BOMWebService\Backend\virEnvBOMBackend\lib\site-packages\selenium\webdriver\remote\webdriver.py”,第 252 行,在 start_session response = 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 raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException:消息:超时
任何指针将不胜感激。谢谢!
【问题讨论】:
那是一个相当老的firefox版本(我不知道geckodriver是对应的驱动程序)。您是否有不想使用当前版本的原因?你说你想在 linux 上运行,但你的堆栈跟踪是用于 Windows 的...... 【参考方案1】:此错误消息...
selenium.common.exceptions.WebDriverException: Message: timed out
...暗示 GeckoDriver 无法启动/生成新的 WebBrowser 即 Firefox Browser 会话。
您的主要问题是您使用的二进制文件版本之间的不兼容性,如下所示:
您的 Selenium Client 版本是 3.141.0,几乎有点旧。 您的 GeckoDriver 版本是 v0.24.0。 您的 Firefox 版本是 v60.9.0esr。所以 Selenium Client v3.141.0 、GeckoDriver v0.24.0 和 Firefox Browser v60.9.0esr 之间存在明显的不匹配 /p>
在这里你可以找到关于Which Firefox browser versions supported for given Geckodriver version?的详细讨论
解决方案
将Selenium升级到当前级别Version 3.141.59。
将GeckoDriver升级到GeckoDriver v0.26.0级别。
GeckoDriver 位于所需位置。
GeckoDriver 对非 root 用户具有可执行权限。
将 Firefox 版本升级到 Firefox v70.0 级别。
清理你的项目工作区通过你的IDE和重建你的项目只需要依赖。
如果您的基本 Web 客户端 版本太旧,请卸载它并安装最新的 GA 和发布版本的 Web 客户端。
进行系统重启。
以非 root 用户身份执行 Test
。
始终在 tearDown()
方法中调用 driver.quit()
以优雅地关闭和销毁 WebDriver 和 Web Client 实例。
【讨论】:
以上是关于Selenium Firefox Python 在无头模式下运行超时初始化驱动程序的主要内容,如果未能解决你的问题,请参考以下文章
在Centos7下安装Python+Selenium+Firefox学习环境
python+selenium自动化环境搭建之后,能打开firefox,却不能执行自动化操作
python+selenium启动firefox和chrome
python+selenium+chromewebdriver或Firefox的环境搭建
“Firefox 意外退出。”在 Python 中运行基本 Selenium 脚本时
selenium.common.exceptions.InvalidSessionIdException通过Python在无头模式下使用GeckoDriver Selenium Firefox(示例代