问题:Selenium:FirefoxProfile异常无法加载配置文件
对于这个先前的问题,我将Selenium更新到了2.0.1版本,但是现在我又遇到了另一个错误,即使配置文件位于以下位置/tmp/webdriver-py-profilecopy
:
在执行中,文件“ /home/sultan/Repository/Django/monitor/app/request.py”,第236行 浏览器= Firefox(配置文件) __init__中的文件“ /usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py”,第46行 self.binary,超时), __init__中的文件“ /usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/extension_connection.py”,第46行 self.binary.launch_browser(self.profile) 在launch_browser中的第44行,文件“ /usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py” self._wait_until_connectable() _wait_until_connectable中的文件“ /usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py”,第87行 引发WebDriverException(“无法加载配置文件。配置文件目录:%s”%self.profile.path) selenium.common.exceptions.WebDriverException:无法加载配置文件。个人档案目录:/ tmp / webdriver-py-profilecopy
怎么了?我该如何解决这个问题?
回答 0
更新:
硒团队已修复最新版本。对于几乎所有环境,修复程序都是:
点安装-U硒
尚不清楚它是在哪个版本上修复的(显然是r13122),但肯定是在2.26.0(更新时为最新)上已修复。
此错误意味着_wait_until_connectable超时,因为某些原因,代码无法连接到已加载到firefox中的webdriver扩展。
我刚刚向selenium报告了一个错误,在此我收到此错误,因为我正尝试使用代理,并且firefox接受了配置文件中4个配置的更改中的2个,因此未配置该代理与扩展名。不知道为什么会这样…
https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/2061
回答 1
将Ubuntu升级到12.04后,我遇到了同样的问题。
该问题在软件包方面,已在库的最新版本中修复。只需更新硒库。对于几乎所有的Python环境,这是:
pip install -U selenium
回答 2
我遇到了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
这样就解决了所有问题,并且这种组合效果更好!
回答 3
作为对Jeff Hoye答案的扩展,一种更“ Pythonic”的方式将是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())
回答 4
如果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
如果您从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中工作肯定会很方便。
回答 6
我遇到了同样的问题,并认为这是硒/ Firefox的错误组合。原来,我的.mozilla /文件夹权限仅可由root用户访问。做的chmod 770 ~/.mozilla/
did俩。我建议在进一步排除故障之前确保这不是问题。
回答 7
pip install -U selenium
我遇到了相同的问题,Firefox 34.0.5 (Dec 1, 2014)
并将Selenium从升级2.42.1
为2.44.0
解决了我的问题。
但是,此后我又看到了这个问题,我认为是2.44.0,并进行了另一次升级。因此,我想知道是否可以通过简单地卸载然后重新安装来解决该问题。如果是这样,我不确定那将表明潜在的问题是什么。
回答 8
我正在使用硒2.53和55.0版的Firefox。我安装了较旧版本的firefox(46.0.1)解决了此问题,因为硒2.53不适用于47.0及更高版本的firefox。
回答 9
这不是一个适当的解决方案,但对我有用,如果有人可以改善,我将很高兴知道。我只是以root用户身份运行脚本sudo python myscript.py
。我想我可以通过更改配置文件默认文件或目录来解决。