4

以下は私の環境です:

  1. OS:Windows 10~64(Home版)
  2. ブラウザ : Firefox 47.0.1 (32 ビット)
  3. Python: 2.7.10.12 (64 ビット)
  4. セレン:3.0.1
  5. Geckodriver: geckodriver-v0.11.1-win64.zip

に Firefox がインストールされていC:\Program Files (x86)\Mozilla Firefoxます。

geckodriver.exe が配置されC:\Python27\Scriptsます。

以下は私のpythonコードです:

from selenium import webdriver

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

次のエラーが発生します。

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)
4

2 に答える 2

0

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

同様の問題が発生しました。関数への参照を与えることで解決しました:

from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

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

于 2016-10-31T23:53:05.980 に答える
0

マシンを再起動すると問題が解決しました。geckodriver.exe(いずれかの場所にを保持する場合は、必要になる場合がありPATHます。

解決する必要があるのが実際の問題かどうかはわかりませんが、変数の 1 つです。


geckodriver.exe および Firefox バージョンのサポートの背景:

geckodrivergithubページから:

Firefox 47 is explicitly not supported

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

  1. Selenium 2.53 の場合、追加の操作は必要ありません ( で使用するようにセットアップする必要はありgeckodriverませselenium 2.53Firefox driver) default
  2. Selenium 3.0 では、 を使用してgeckodriverパス (geckodriverdefaultドライバーとFirefox同様Selenium 3.0) をSystem.setProperty設定marionettefalse、 に設定する必要があります。これにより、geckodriver機能が無効になり、デフォルトの Firefox ドライバーが使用されます。

コード例:

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
于 2016-11-16T15:58:56.670 に答える