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文件的默认文件或目录可以工作。