2016-10-26 2 views
4

が私の環境である:python selenium 3.0 - デフォルトの場所にインストールされたFirefox 47.0.1は識別されません。続き(geckodriver)

  1. OS:Windowsの10から64(ホーム版)
  2. ブラウザ:Firefoxの47.0.1(32ビット)
  3. のPython:2.7.10.12(64ビット)
  4. セレン:3.0.1
  5. Geckodriver:Firefoxのはにインストールされている

geckodriver-v0.11.1-win64.zip 10。

geckodriver.exeはC:\Python27\Scriptsに配置されています。

from selenium import webdriver 

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

次のエラーを与える:後

は私のPythonコードである

Traceback (most recent call last): 
    File "examples1.py", line 5, in <module> 
    driver = webdriver.Firefox() 
    File "C:\Python27\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 152, in __init__ 
    keep_alive=True) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 92, in __init__ 
    self.start_session(desired_capabilities, browser_profile) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 179, in start_session 
    response = self.execute(Command.NEW_SESSION, capabilities) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 236, in execute 
    self.error_handler.check_response(response) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 192, in check_response 
    raise exception_class(message, screen, stacktrace) 
selenium.common.exceptions.WebDriverException: Message: Expected browser binary location, but unable to find binary in default location, no 'moz:firefoxOptions.binary' capability provided, and no binary flag set on the command line 

私の質問はFirefoxがデフォルトの場所にインストールされているが、webdriverをはそれを見つけることができなかったことですエラーをスローします。

注:次のようにFirefoxのバイナリの場所を明示的に指定すると機能しています。

binary = FirefoxBinary(r'C:\Program Files (x86)\Mozilla Firefox\firefox.exe') 
driver = webdriver.Firefox(firefox_binary=binary) 

答えて

0

このエラーの原因は、PythonがFirefoxBinary関数を直接見つけることができなかったためです。

同様の問題が発生しました。関数への参照を与えることによってそれを解決:

from selenium.webdriver.firefox.firefox_binary import FirefoxBinary 

後で解決策は(間接的に)すでにhere利用可能であることがわかりました。

+0

問題の内容がわかりません。マシンを再起動した後、私は期待どおりに働いています.e.e。、Firefoxのバイナリの場所を使用して場所を指定しなくても、デフォルトの場所からブラウザを起動しました。私はそれが輸入の問題ではないと確信しています。 –

+2

私はこれがどういう意味か分かりません: "PythonはFirefoxBinary関数を直接見つけることができませんでした" ...しかし、この答えは正しくありません。 –

0

マシンを再起動すると問題が解決しました。あなたがPATHのいずれかの場所にgeckodriver.exeを続ければ(必要な場合があります。それは本当の解決すべき問題ではなく、変数の一つであった場合

わからない。


リトルをgeckodriver githubのページから

:geckodriver.exeとFirefoxのバージョンをサポートする背景

Firefox 47 is explicitly not supported 

Firefox 47.0.1バージョンを使用する場合はFirefox driverを使用しますが、geckodriverは使用しないでください。

  1. はセレン2.53の場合は、あなたが任意の追加のことを行う必要がありません(selenium 2.53として設定geckodriverする必要がdefaultによってFirefox driverを使用しません)。
  2. セレン3。0は、我々はgeckodriver機能が無効になり、デフォルトのFirefoxのドライバが使用されているので、(geckodriverSelenium 3.0Firefoxためdefaultドライバがあるとして)System.setPropertyを使用してgeckodriverパスを設定し、falsemarionetteを設定する必要があります。

例コード:

System.setProperty("webdriver.gecko.driver", "path/to/geckodriver.exe"); 
DesiredCapabilities d = new DesiredCapabilities(); 
d.setCapability("marionette", false); // to disable marionette, by default true 
WebDriver driver = new FirefoxDriver(d); 

参照:

  1. https://github.com/mozilla/geckodriver#supported-firefoxen
  2. https://github.com/mozilla/geckodriver/issues/224
  3. https://stackoverflow.com/a/40658421/2575259
関連する問題