Selenium.common.exceptions.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
  • Selenium 3.8.0
  • Firefox 46.0
  • GeckoDriver 0.19.1 (Он находится в папке, которая находится в моей переменной среды PATH)
  • MacOS 10.12.6

Ответ 1

Когда вы используете Selenium 3.8.0, вы должны использовать GeckoDriver. Но опять же, когда вы используете Firefox v46.0, вам нужно установить marionette значение 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()

Ответ 2

Если вы собираетесь использовать 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)

Ответ 3

Вы можете увидеть аналогичную ошибку и в Chrome. Если вы видите его в Ubuntu, возможно, причина в том, что у вас есть предварительно установленная версия -i Chrome и Firefox, которая старше. И вы загрузили последнюю версию драйвера Chrome/Firefox.

Простое решение:

  1. Удалите существующий браузер Chrome/Firefox, предоставленный из Ubuntu: Перейдите в Приложения (верхний левый угол) → Программное обеспечение Ubuntu center-> найдите Chrome и удалите его.
  2. Установите последнюю версию браузера.

Для Chrome следующие шаги:

  1. wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

  2. sudo dpkg -i google-chrome-stable_current_amd64.deb

Готово!

Ответ 4

Я получил эту ошибку, потому что браузер Firefox не был установлен на моей машине. Вы можете скачать Firefox или скачать драйвер Chrome здесь. Если вы используете диск Chrome, убедитесь, что вы добавили его в путь (так же, как и гекодривер).

И вы можете использовать это так:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.python.org")