web-dev-qa-db-ja.com

selenium.common.exceptions.SessionNotCreatedException:メッセージ:SeleniumからFirefox 46で一致する機能セットが見つかりません

Firefox Webブラウザを起動するためにPythonでSeleniumを取得できないため、一致しないバージョンがいくつか必要です。古いバージョンの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
15
Eamonn Gormley

Selenium 3.8.0を使用しているため、GeckoDriverを強制的に使用する必要があります。ただし、Firefox v46.0を使用しているため、機能を設定する必要がありますmarionette toFalseから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()
28
DebanjanB

Geckodriverを使用する場合、Firefoxの新しいバージョンを使用する必要があります。 Frex: https://github.com/mozilla/geckodriver/releases/tag/v0.19. リストFF55以降。

FF46を使用する予定がある場合は、geckodriverを使用しないでください。マリオネットをFalseに設定するように機能を更新します。

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

Chromeでも同様のエラーを見ることができます。 Ubuntuで表示されている場合、その理由はおそらく、Chromeのプレインストールバージョンと古いFirefoxを使用しているためです。そして、Chrome/Firefoxドライバーの最新バージョンをダウンロードしました。

簡単な解決策は次のとおりです。

  1. Ubuntuから提供されている既存のChrome/Firefoxブラウザーをアンインストールします。アプリケーション(左上隅)-> 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