Selenium:FirefoxProfile例外がプロファイルをロードできません


96

パーこの前の質問私は、バージョン2.0.1へのセレンを更新しかし、今、私は、プロファイルのファイルが下に存在する場合でも、別のエラーがあります/tmp/webdriver-py-profilecopy

  ファイル「/home/sultan/Repository/Django/monitor/app/request.py」、行236、実行中
    browser = Firefox(プロファイル)
  __init__内のファイル "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py"、46行目
    self.binary、timeout)、
  __init__内のファイル "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/extension_connection.py"、46行目
    self.binary.launch_browser(self.profile)
  launch_browser内のファイル "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py"、44行目
    self._wait_until_connectable() 
  ファイル「/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py」、87行目、_wait_until_connectable内
    raise WebDriverException( "プロファイルをロードできません。プロファイルディレクトリ:%s"%self.profile.path)
selenium.common.exceptions.WebDriverException:プロファイルを読み込めません。プロファイルディレクトリ:/ tmp / webdriver-py-profilecopy

なにが問題ですか?この問題を解決するにはどうすればよいですか?

回答:


132

更新:

Seleniumチームが最新バージョンで修正されました。ほとんどすべての環境で、修正は次のとおりです。

pip install -U selenium

どのバージョンで修正されたのかは不明です(どうやらr13122)。2.26.0(アップデート時の最新)では間違いなく修正されています。


このエラーは、_wait_until_connectableがタイムアウトしたことを意味します。これは、何らかの理由で、FirefoxにロードされているWebdriver拡張機能にコードが接続できないためです。

セレンにエラーを報告したところ、プロキシを使用しようとしていて、プロファイルで構成された4つの変更のうち2つだけがFirefoxに受け入れられたため、プロキシは通信するように構成されていません。拡張子。なぜこれが起こっているのかわからない...

https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/2061


3
sudorootとしてログインしていない場合は、を追加する必要があります。とにかく、これは命の恩人でした!ありがとう!!
Abhranil Das 2013

はい、それはWebDriverExceptionを修正するのに役立ちます:メッセージ: 'プロファイルをロードできません。
トム・ジョイ

5
@AbhranilDas (おそらく使用する必要がある)を使用しsudoている場合は必要ありませんvirtualenv
Kos

7
いいえ、このソリューションはFirefox 45.0bおよび最新のSelenium(2.5.1)では機能しません
Alex GP

1
@ AlexG.P。この質問への回答を最初に書いたのは4.5年前です。新しい質問をする価値があるかもしれない十分な時間が経過したと私は思う。その場合は、この質問への参照と次の情報を含めてください。a)上記で指定したFirefoxおよびSeleniumのバージョン。b)あなたのOS; c)pipのバージョン。過去5年間で変更されたため、問題はpipバージョンに関連している可能性があります。
レイチェル

31

Ubuntuを12.04にアップグレードした後も同じ問題が発生しました。

この問題はパッケージ側にあり、ライブラリの最新バージョンで修正されています。セレンライブラリを更新するだけです。ほとんどすべてのPython環境の場合、これは次のとおりです。

pip install -U selenium

理由はわかりませんが、セレン2.28.0を使用していると、UbuntuのFireFox 22.0および23.0で同じ問題が発生します。私にとっては、Firefoxを18.0にダウングレードすることのみが問題なく動作します(他のバージョンをチェックしたことはありません)。
ドミトリー

26

私はFF 32.0とSelenium selenium-2.42.1-py2.7.eggで同じ問題に直面しました。セレンを更新しようとしましたが、すでに最新バージョンです。解決策は、Firefoxをバージョン30にダウングレードすることでした。これがプロセスです。

#Download version 30 for Linux (This is the 64 bit)
wget http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/30.0/linux-x86_64/en-US/firefox-30.0.tar.bz2

tar -xjvf firefox-30.0.tar.bz2
#Remove the old version
sudo rm -rf /opt/firefox*
sudo mv firefox /opt/firefox30.0
#Create a permanent link
sudo ln -sf /opt/firefox30.0/firefox /usr/bin/firefox

これはすべての問題を解決し、この組み合わせはよりうまく機能します!


これは私のセットアップを修正しました!!
Macumbaomuerte 2016

MacでFirefoxをダウングレードするにはどうすればよいですか?'virtualenv'のMactopでscrapy / seleniumを使用していますが、同じエラーが発生します。Macでダウングレードした場合、問題は解決すると思います。
brkr 2016年

8

Jeff Hoyeの答えの拡張として、より「Python的な」方法はwebdriver.firefox.firefox_profile.FirefoxProfile、次のようにサブクラス化することです。

class CygwinFirefoxProfile(FirefoxProfile):
    @property
    def path(self):
        path = self.profile_dir
        # Do stuff to the path as described in Jeff Hoye's answer
        return path

次に、ドライバーを作成します。

driver = webdriver.Firefox(firefox_profile=CygwinFirefoxProfile())

5

pip install -U selenium動作しない場合(私の場合は動作しません)、Firefoxを以前のバージョンにダウングレードしてみてください。

Firefox 49.0を使用していて、バージョンがセレンでサポートされていることを確認するために45.0にダウングレードしました。それは完璧に機能しました。

Firefox 45.0にダウングレードするための迅速な方法を次に示します。

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

お役に立てれば。


4

cygwinからwebdriverを実行している場合、問題は、プロファイルへのパスがPOSIX形式のままであり、Windowsプログラムを混乱させることです。私のソリューションでは、cygpathを使用してWindows形式に変換しています。

このファイル/メソッドで:selenium.webdriver.firefox.firefox_binary.launch_browser():

交換:

    self._start_from_profile_path(self.profile.path)

と:

    from subprocess import Popen, PIPE
    proc = Popen(['cygpath','-d',self.profile.path], stdout=PIPE, stderr=PIPE)
    stdout, stderr = proc.communicate()
    path = stdout.split('\n', 1)[0]

    self._start_from_profile_path(path)
    #self._start_from_profile_path(self.profile.path)

Pythonは私の主要なプログラミング言語にさえ近いわけではないので、誰かがよりPython的なアプローチを推奨できれば、それをディストリビューションにプッシュすることができます。それが箱から出してすぐにcygwinで機能するなら、それは確かに便利でしょう。


3

私は同じ問題を抱えていて、それがセレン/ Firefoxの間違った組み合わせであると信じていました。私の.mozilla /フォルダーのアクセス許可はrootユーザーのみがアクセスできることがわかりました。そうするchmod 770 ~/.mozilla/ことでトリックができました。さらにトラブルシューティングを行う前に、これが問題ではないことを確認することをお勧めします。


1

pip install -U selenium

私と同じ問題がFirefox 34.0.5 (Dec 1, 2014)あり、Seleniumをからアップグレードし2.42.12.44.0私の問題を解決しました。

しかし、私はそれ以来この問題を再び目にしてきました。2.44.0で、もう1つのアップグレードで修正しました。だから私はそれが単にアンインストールしてから再インストールすることで修正されるのではないかと思っています。もしそうなら、それが根本的な問題が何を示しているかはわかりません。


私はWindowsの2.44とff35でまったく同じ問題を抱えています
pylover

0

私はセレン2.53とFirefoxバージョン55.0を使用していました。古いバージョンのFirefox(46.0.1)をインストールすることでこの問題を解決しました。これは、Selenium 2.53がFirefoxバージョン47.0以降では機能しないためです。


-1

これは適切な解決策ではありませんが、私にとってはうまくいきました。誰かが改善できるとしたら、私は知って嬉しいです。rootとしてスクリプトを実行するだけですsudo python myscript.py。プロファイルのデフォルトのファイルまたはディレクトリを変更することで解決できると思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.