селен.общий.исключения.SessionNotCreatedException: сообщение: не удалось найти соответствующий набор возможностей с Firefox 46 через Selenium

у меня должны быть некоторые версии, которые не совпадают, так как я не могу получить Selenium с Python для запуска веб-браузера Firefox. Я использую более старую версию Firefox, потому что у других людей здесь есть такая же старая версия Python, и для них лучше всего работает старая версия Firefox.

код:

from selenium import webdriver
from selenium import common
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
driver=webdriver.Firefox(capabilities=DesiredCapabilities.FIREFOX)

ошибка:

Traceback (most recent call last):
  File "scrapeCommunitySelenium.py", line 13, in <module>
    driver=webdriver.Firefox(capabilities=DesiredCapabilities.FIREFOX)
  File "/Library/Python/2.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 158, in __init__
    keep_alive=True)
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 154, in __init__
    self.start_session(desired_capabilities, browser_profile)
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 243, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 311, in execute
    self.error_handler.check_response(response)
  File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 237, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities

информация о версии:

  • Python 2.7.10
  • селен 3.8.0
  • Firefox 46.0
  • GeckoDriver 0.19.1 (он находится в папке, которая находится в переменной среды my PATH)
  • MacOS 10.12.6

2 ответов


как вы используете Selenium 3.8.0 вы должны использовать GeckoDriver в обязательном порядке. Но опять же, как вы используете Firefox v46.0 вы должны установить возможность marionette to False через DesiredCapabilities() следующим образом :

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

cap = DesiredCapabilities().FIREFOX
cap["marionette"] = False
browser = webdriver.Firefox(capabilities=cap, executable_path="C:\path\to\geckodriver.exe")
browser.get('http://google.com/')
browser.quit()

Если вы собираетесь использовать Geckodriver, вам определенно нужно использовать более новую версию Firefox. Frex:https://github.com/mozilla/geckodriver/releases/tag/v0.19.0 список FF55 или выше.

Если вы планируете использовать FF46, не используйте geckodriver. Обновите свои возможности, чтобы марионетка была установлена в False:

caps = DesiredCapabilities.FIREFOX.copy()
caps['marionette'] = False
driver=webdriver.Firefox(capabilities=caps)