この前の質問 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
なにが問題ですか?この問題を解決するにはどうすればよいですか?
更新:
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
Ubuntuを12.04にアップグレードした後、同じ問題が発生しました。
この問題はパッケージ側にあり、最新バージョンのライブラリで修正されています。 Seleniumライブラリを更新するだけです。ほとんどすべてのPython環境では、これは次のとおりです。
pip install -U Selenium
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
これですべての問題が解決し、この組み合わせがうまく機能します!
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())
pip install -U Selenium
は動作しません(私の場合は動作しませんでした)。Firefoxを以前のバージョンにダウングレードしてみてください。
Firefox 49.0を45.0にダウングレードして、Seleniumでバージョンがサポートされていることを確認しました。それは完全に機能しました。
Firefox 45.0にすばやくダウングレードする方法は次のとおりです。
Sudo apt-get install firefox=45.0.2+build1-0ubuntu1
お役に立てれば。
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なアプローチを推奨できるなら、ディストリビューションにプッシュすることができます。箱の。
私は同じ問題を抱えていて、それがSelenium/Firefoxの間違ったコンボだと信じていました。私の.mozilla /フォルダーのアクセス権は、rootユーザーのみがアクセスできることが判明しました。 chmod 770 ~/.mozilla/
トリックをしました。さらにトラブルシューティングする前に、これが問題でないことを確認することをお勧めします。
_pip install -U Selenium
_
Firefox 34.0.5 (Dec 1, 2014)
でも同じ問題があり、Seleniumを_2.42.1
_から_2.44.0
_にアップグレードすると問題が解決しました。
しかし、私は2.44.0でこの問題をもう一度見たことがあり、別のアップグレードで修正されました。それで、単にアンインストールしてから再インストールするだけで修正されるのではないかと思っています。もしそうなら、私はそれが根底にある問題が何を示しているのか分かりません。
Selenium 2.53とfirefoxバージョン55.0を使用していました。 Selenium 2.53はFirefoxバージョン47.0以降では動作しないため、Firefoxの古いバージョン(46.0.1)をインストールすることでこの問題を解決しました。