“无法找到一组匹配的功能”与Selenium和Python以及Windows 10上的当前Firefox

时间:2018-04-03 04:20:21

标签: python selenium firefox

我安装了以下内容:

  • Window 10(1709版)
  • Firefox v59(64位)
  • Python 3.6.5
  • Selenium 3.11.0 for Python
  • GeckoDriver 0.20.0

官方Selenium Python网站上有一个名为“Example 0”的示例测试:https://pypi.python.org/pypi/selenium。这是整个测试:

from selenium import webdriver

browser = webdriver.Firefox()
browser.get('http://seleniumhq.org/')

当我运行它时,它会抱怨“selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities

搜索Stack Overflow的解决方案,我发现other suggested solutions,就像这个测试一样:

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary('C:\\Program Files\\Mozilla Firefox\\firefox.exe')
cap = DesiredCapabilities().FIREFOX
cap["marionette"] = False
browser = webdriver.Firefox(capabilities=cap, firefox_binary=binary)
browser.get('http://google.com/')

运行它,我收到以下错误: selenium.common.exceptions.WebDriverException: Message: Can't load the profile. Possible firefox version mismatch. You must use GeckoDriver instead for Firefox 48+. Profile Dir: C:\Users\Username\AppData\Local\Temp\tmp4t_plvms If you specified a log_file in the FirefoxBinary constructor, check it for details.

我有Firefox v59,所以错误说我应该使用GeckoDriver。问题是,上面的第一个测试(“示例0”)使用了GeckoDriver,并且具有“无法找到匹配的一组功能”错误。针对该错误的建议解决方案是在第二次测试中设置“cap["marionette"] = False”,但该方法失败 我只是无法获胜。我该如何解决这个问题?我想从官方的Selenium Python站点成功运行“Example 0”测试。

(PS这不是一个重复的问题。所有其他类似的问题都有Firefox v54或更早版本,并且能够使用“marionette = False”方法。我使用的是Firefox 59并且无法使用该方法。)

1 个答案:

答案 0 :(得分:1)

原来,我有Firefox 64位,Python 3.6 32位和GeckoDriver 32位。

  1. 我卸载了Python 32位,然后安装了Python 64-bit
  2. 下载GeckoDriver 64位并更正了“路径”'在Environment Variables中指向64位驱动程序。
  3. 重新启动计算机。
  4. 我还跑了'pip卸载selenium'然后“安装硒”,虽然这可能不是必需的。