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
バージョン情報:
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()
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)
Chromeでも同様のエラーを見ることができます。 Ubuntuで表示されている場合、その理由はおそらく、Chromeのプレインストールバージョンと古いFirefoxを使用しているためです。そして、Chrome/Firefoxドライバーの最新バージョンをダウンロードしました。
簡単な解決策は次のとおりです。
Chromeの場合、手順は次のとおりです。
wget https://dl.google.com/linux/direct/google-chrome-stable_current_AMD64.deb
Sudo dpkg -i google-chrome-stable_current_AMD64.deb
できた!