web-dev-qa-db-ja.com

Firefoxの更新後にSeleniumでブラウザーを開けない

Ubuntu Desktop 16.04でSelenium WebDriverを使用していますが、ブラウザーを開くことができません。 Firefoxの更新後、次のエラーが表示されます(これまではすべて機能していました)。

Traceback (most recent call last):
  File "test.py", line 6, in <module>
    driver = webdriver.Firefox()
  File "/usr/local/lib/python3.5/dist-packages/Selenium/webdriver/firefox/webdriver.py", line 81, in __init__
    self.binary, timeout)
  File "/usr/local/lib/python3.5/dist-packages/Selenium/webdriver/firefox/extension_connection.py", line 51, in __init__
    self.binary.launch_browser(self.profile, timeout=timeout)
  File "/usr/local/lib/python3.5/dist-packages/Selenium/webdriver/firefox/firefox_binary.py", line 68, in launch_browser
    self._wait_until_connectable(timeout=timeout)
  File "/usr/local/lib/python3.5/dist-packages/Selenium/webdriver/firefox/firefox_binary.py", line 98, in _wait_until_connectable
    raise WebDriverException("The browser appears to have exited "
Selenium.common.exceptions.WebDriverException: Message: The browser appears to have exited before we could connect. If you specified a log_file in the FirefoxBinary constructor, check it for details.
38
Alexa Iulian

FIXED:現時点での解決策はFirefoxをダウングレードすることです!このコマンドを実行して、利用可能なFirefoxバージョンのリストを取得します。

apt-cache show firefox | grep Version

私の結果:

Version: 47.0+build3-0ubuntu0.16.04.1
Version: 45.0.2+build1-0ubuntu1

インストール:

Sudo apt-get install firefox=45.0.2+build1-0ubuntu1

このバージョンを保持し、更新を禁止するには:

Sudo apt-mark hold firefox

Firefoxのバージョンを保留にして更新を許可する場合:

Sudo apt-mark unhold firefox
Sudo apt-get upgrade
11
Alexa Iulian

Firefoxバージョン47.0(まだ間もなく出てきました)では、このバージョンでバグが導入されているため、Firefoxに接続するには新しいドライバーを使用する必要があります(Seleniumではなくmozillaが作成)。 Firefoxバージョン48.0の時点で、古いドライバーは完全に非推奨になり、Marionetteのみを使用できるため、今すぐ切り替えることをお勧めします。参照: Firefox用Marionette Webdriver

driver (OSXではbrew install geckodriverを使用)をダウンロードし、Windowsでは実行可能ファイルの名前をwires.exeに、* nixシステムではwiresに変更し、実行可能ファイルを確認しますシステムパスに存在する場合は、次を使用して、古いドライバの代わりにプログラムでこのドライバを使用します。

ローカルWebドライバーを使用する場合:

Python:

firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True

driver = webdriver.Firefox(capabilities=firefox_capabilities)

ルビー:

driver = Selenium::WebDriver.for :firefox, marionette: true

Javascript:

var capabilities = Capabilities.firefox();
capabilities.set('marionette', true);

var driver = new webdriver.Builder().withCapabilities(capabilities).build();

Java:

DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
Webdriver driver = new FirefoxDriver(capabilities);

C#:

var driver = new FirefoxDriver(new FirefoxOptions());

Seleniumグリッドを使用する場合:

Seleniumグリッドを使用する場合、ドライバーはグリッド内のすべてのマシンのパスに存在する必要があります。

Python:

firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
driver = webdriver.Firefox(capabilities=firefox_capabilities)

ルビー:

caps = Selenium::WebDriver::Remote::Capabilities.firefox marionette: true
driver = Selenium::WebDriver.for :firefox, desired_capabilities: caps

Java:

DesiredCapabilities capabilities = DesiredCapabilities.firefox();
// Set Marionette on so the Grid will use this instead of normal FirefoxDriver
capabilities.setCapability("marionette", true);

WebDriver driver = new RemoteWebDriver(capabilities); 

C#:

DesiredCapabilities capabilities = DesiredCapabilities.Firefox();
// Set Marionette on so the Grid will use this instead of normal FirefoxDriver
capabilities.SetCapability("marionette", true);

var driver = new RemoteWebDriver(capabilities); 
60
Mobrockers

Solution:Firefoxを47.0.1に、Seleniumを2.53.1にアップグレードします。

この組み合わせは私のために働いた。

詳細については https://stackoverflow.com/a/37728659/6469532 を参照してください

10
Mohit Tater

一部の人々は、いくつかのbuttonsまたはselectボックスをmarionetteモードで選択できないという問題を抱えています。

別の方法として、古いバージョンのfirefoxを使用します。

バイナリ here をダウンロードして、ここで使用できます。

from Selenium import webdriver
from Selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary('path/to/binary')
driver = webdriver.Firefox(firefox_binary=binary)
4
trantu

SOLUTION 45バージョンにダウングレード:

firefox --version
    Mozilla Firefox 47.0
apt-get remove firefox
wget https://ftp.mozilla.org/pub/firefox/releases/45.0/linux-x86_64/en-US/firefox-45.0.tar.bz2
tar -xjf firefox-45.0.tar.bz2
mv firefox /opt/firefox45
ln -s /opt/firefox45/firefox /usr/bin/firefox
firefox --version
    Mozilla Firefox 45.0
3
user1412586

1)geckodriver 0.6.2をダウンロードし、解凍し、「wires.exe」ではなく「wires」に名前を変更します https://github.com/mozilla/geckodriver/releases

2)ワイヤの実行可能場所をPATHに追加します(これをpythonフォルダC:Program Files\Python ...に配置します)[スタート]を選択し、[コントロールパネル]を選択します。 [システム]をダブルクリックし、[詳細設定]タブを選択します。 [環境変数]をクリックします。 ... [システム変数の編集(または新しいシステム変数)]ウィンドウで、PATH環境変数の値を指定します。 ...(「;」を使用してパスを区切ります。つまり、[C:Users\Reuben; C:Program Files\Python]

3)Firefox 45へのダウングレード https://ftp.mozilla.org/pub/firefox/releases/45.0.2/win64/en-US/

1
Reuben

Firefoxをダウングレードする必要はありません。 WindowsおよびFirefox 49バージョンで問題が発生しました。私はgeckodrvier 64ビットバージョンを使用していました。これをgeckodrvier 32ビットバージョンに変更し、問題を解決しました。現在、ブラウザは問題なく正常に開いています。

1
Sachin Nikam