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.
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
Sudo apt-mark unhold firefox
Sudo apt-get upgrade
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);
Solution:Firefoxを47.0.1に、Seleniumを2.53.1にアップグレードします。
この組み合わせは私のために働いた。
詳細については https://stackoverflow.com/a/37728659/6469532 を参照してください
一部の人々は、いくつかのbutton
sまたは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)
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
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/
Firefoxをダウングレードする必要はありません。 WindowsおよびFirefox 49バージョンで問題が発生しました。私はgeckodrvier 64ビットバージョンを使用していました。これをgeckodrvier 32ビットバージョンに変更し、問題を解決しました。現在、ブラウザは問題なく正常に開いています。