首页 > 解决方案 > Selenium/Python - 旧版本 Firefox (31.8.0esr) 的消息“无法找到匹配的功能集”

问题描述

我需要在 Debian 上使用 FF31esr 和 selenium/python 当使用 FF60esr 做所有事情时 - 一切正常但是当我切换到 FF31esr 时,我收到了这个错误:

selenium.common.exceptions.SessionNotCreatedException:消息:无法找到匹配的功能集

我使用 Debian9 linux,最新版本的 Selenium 和 Geckodriver,默认安装在 debian 上的 Python3.5 Firefox 60.7.0esr,我下载并解压 Firefox 31.8.0 到 /opt/firefox-31.8.0esr/

所以这段代码工作正常(它启动 FF60esr)

from selenium import webdriver
from pyvirtualdisplay import Display
display = Display(visible=0, size=(800, 600))
display.start()
driver = webdriver.Firefox()
driver.get('http://google.com')
print(driver.title)
driver.quit()
display.stop()

但是当我执行这段代码时:

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from pyvirtualdisplay import Display
display = Display(visible=0, size=(800, 600))
display.start()
binary = FirefoxBinary('/opt/firefox-31.8.0esr/firefox')
driver = webdriver.Firefox(firefox_binary=binary)

然后我得到:

selenium.common.exceptions.SessionNotCreatedException:消息:无法找到匹配的功能集

我在这里找到了使用 DesiredCapabilities 的 StackOverflow 决定cap["marionette"] = False- 但它对我不起作用我正在做:

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from pyvirtualdisplay import Display
display = Display(visible=0, size=(800, 600))
display.start()
cap = DesiredCapabilities().FIREFOX
cap["marionette"] = False
binary = FirefoxBinary('/opt/firefox-31.8.0esr/firefox')
browser = webdriver.Firefox(capabilities=cap, firefox_binary=binary)

并得到另一个错误

selenium.common.exceptions.WebDriverException:消息:浏览器似乎在我们连接之前已经退出。如果您在 FirefoxBinary 构造函数中指定了 log_file,请检查它以获取详细信息。

标签: pythonseleniumfirefoxgeckodriver

解决方案


推荐阅读