it-roy-ru.com

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 
  • Селен 3.8.0 
  • Firefox 46.0 
  • GeckoDriver 0.19.1 (он находится в папке, которая находится в моей переменной окружения PATH)
  • MacOS 10.12.6
11
Eamonn Gormley

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

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()
21
DebanjanB

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

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

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

  1. Удалите существующий браузер Chrome/Firefox из Ubuntu: Перейдите в Приложения (верхний левый угол) -> Центр программного обеспечения Ubuntu -> найдите 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 

Готово!

0
sachin thakare