web-dev-qa-db-ja.com

Selenium:FirefoxProfile例外プロファイルを読み込めません

この前の質問 Seleniumをバージョン2.0.1に更新しましたが、プロファイルファイルが/tmp/webdriver-py-profilecopyの下に存在する場合でも、別のエラーが発生しました。

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

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

95
sultan

更新:

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

pip install -U Selenium

どのバージョンで修正されたかは明らかではありません(明らかに r13122 )が、確かに2.26.0(現在のアップデート時)までには修正されています。


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

私はプロキシを使用しようとしているため、このエラーが発生しているSeleniumにエラーを報告しました拡張機能。なぜこれが起こっているのか分かりません...

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

132
Rachel

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

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

pip install -U Selenium
31
user1380597

FF 32.0とSelenium selenium-2.42.1-py2.7.Eggでも同じ問題に直面しました。 Seleniumを更新しようとしましたが、すでに最新バージョンです。解決策は、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

これですべての問題が解決し、この組み合わせがうまく機能します!

26
Mijo

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())
8
Joel Cross

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

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

Firefox 45.0にすばやくダウングレードする方法は次のとおりです。

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

お役に立てれば。

5
Chris

Cygwinからwebdriverを実行している場合、問題はプロファイルへのパスがWindowsプログラムを混乱させるPOSIX形式のままであることです。私のソリューションは、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は私の主要なプログラミング言語にさえ近いわけではないので、誰かがよりPythonicなアプローチを推奨できるなら、ディストリビューションにプッシュすることができます。箱の。

4
Jeff Hoye

私は同じ問題を抱えていて、それがSelenium/Firefoxの間違ったコンボだと信じていました。私の.mozilla /フォルダーのアクセス権は、rootユーザーのみがアクセスできることが判明しました。 chmod 770 ~/.mozilla/トリックをしました。さらにトラブルシューティングする前に、これが問題でないことを確認することをお勧めします。

3
chillwx

_pip install -U Selenium_

Firefox 34.0.5 (Dec 1, 2014)でも同じ問題があり、Seleniumを_2.42.1_から_2.44.0_にアップグレードすると問題が解決しました。

しかし、私は2.44.0でこの問題をもう一度見たことがあり、別のアップグレードで修正されました。それで、単にアンインストールしてから再インストールするだけで修正されるのではないかと思っています。もしそうなら、私はそれが根底にある問題が何を示しているのか分かりません。

1
Rob Bednark

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

0
Rashid