Selenium:FirefoxProfileexception无法加载configuration文件
根据以前的问题,我将Selenium更新到了2.0.1版。但是现在我又遇到了另一个错误,即使configuration文件存在于/tmp/webdriver-py-profilecopy
:
文件“/home/sultan/Repository/Django/monitor/app/request.py”,第236行,执行 浏览器= Firefox(个人资料) 文件“/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py”,第46行,在__init__ self.binary,超时), 文件“/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() 文件“/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py”,第87行,在_wait_until_connectable 引发WebDriverException(“无法加载configuration文件。configuration文件目录:%s”%self.profile.path) selenium.common.exceptions.WebDriverException:无法加载configuration文件。 configuration文件目录:/ tmp / webdriver-py-profilecopy
哪里不对? 我该如何解决这个问题?
更新:
Selenium团队修复了最新版本。 对于几乎所有的环境,修复方法是:
pip安装-Uselenium
不清楚它固定在哪个版本(显然是r13122 ),但当然是2.26.0(更新时的当前版本)是固定的。
此错误意味着_wait_until_connectable超时,因为某些原因,代码无法连接到已加载到Firefox的webdriver扩展。
我刚刚向selenium报告了一个错误,我得到这个错误,因为我试图使用代理,configuration文件中configuration的4个变化中只有2个被firefox接受,所以代理没有configuration为与扩展名。 不知道为什么发生这种情况…
https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/2061
将Ubuntu升级到12.04后,我遇到了同样的问题。
这个问题在软件包方面,并已在最新版本的库中得到修复。 只需更新selenium库。 几乎所有的Python环境都是这样的:
pip install -U selenium
我遇到了FF 32.0和Selenium-2.42.1-py2.7.egg的同样的问题。 试图更新selenium,但它已经是最新的版本。 解决scheme是将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的答案的延伸,更多的“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
然后,创build你的驱动程序:
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,问题是configuration文件的path仍然是POSIX格式,它使windows程序混淆了。 我的解决scheme使用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的方法,也许我们可以把它推入发行版。 它确实会很方便,如果它开箱即用cygwin工作。
我有同样的问题,并认为这是selenium/ Firefox的错误组合。 原来,我的.mozilla /文件夹权限只能被root用户访问。 做chmod 770 ~/.mozilla/
做了诡计。 我build议在进一步排除故障之前确保这不是问题。
pip install -U selenium
我和Firefox 34.0.5 (Dec 1, 2014)
有同样的问题,将Selenium从2.42.1
升级到2.44.0
解决了我的问题。
不过,我已经看到了这个问题,我认为与2.44.0,另一个升级固定它。 所以我想知道是否可以通过简单的卸载然后重新安装来解决。 如果是这样,我不确定那将表明潜在的问题是什么。
我使用selenium2.53和Firefox版本55.0。 我通过安装老版本的firefox(46.0.1)解决了这个问题,因为selenium 2.53在firefox 47.0及以上版本中不起作用。
这不是一个合适的解决scheme,但为我工作,如果有人能改善我会很高兴知道。 我只是以root身份运行脚本: sudo python myscript.py
。 我想我可以解决通过更改configuration文件的默认文件或目录可以工作。