【发布时间】:2011-10-04 15:37:34
【问题描述】:
根据this previous question,我将 Selenium 更新到了 2.0.1 版
但是现在我有另一个错误,即使配置文件存在于/tmp/webdriver-py-profilecopy下:
怎么了?我该如何解决这个问题?
【问题讨论】:
标签: python firefox selenium selenium-webdriver webdriver
根据this previous question,我将 Selenium 更新到了 2.0.1 版
但是现在我有另一个错误,即使配置文件存在于/tmp/webdriver-py-profilecopy下:
怎么了?我该如何解决这个问题?
【问题讨论】:
标签: python firefox selenium selenium-webdriver webdriver
更新:
Selenium 团队已在最新版本中修复。对于几乎所有环境,修复方法是:
pip install -U selenium
不清楚它是在哪个版本修复的(显然是 r13122),但肯定到 2.26.0(更新时的当前版本)它已修复。
这个错误意味着_wait_until_connectable超时,因为某些原因,代码无法连接到已经加载到firefox中的webdriver扩展。
我刚刚向 selenium 报告了一个错误,我收到此错误是因为我正在尝试使用代理,并且配置文件中的 4 个配置更改中只有 2 个已被 firefox 接受,因此未配置代理与分机交谈。不知道为什么会这样……
https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/2061
【讨论】:
sudo。无论如何,这是救命稻草!谢谢!!
virtualenv(您可能应该使用),则不需要sudo。
在将 Ubuntu 升级到 12.04 后,我遇到了同样的问题。
问题出在软件包方面,并已在最新版本的库中得到修复。只需更新硒库。对于几乎所有 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 答案的扩展,更“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())
【讨论】:
如果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,问题是配置文件的路径仍然是 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 中开箱即用,那肯定会很方便。
【讨论】:
我遇到了同样的问题,并认为这是 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 版。我通过安装旧版本的 firefox (46.0.1) 解决了这个问题,因为 selenium 2.53 不适用于 firefox 47.0 及更高版本。
【讨论】:
这不是一个合适的解决方案,但对我有用,如果有人可以改进我会很高兴知道。我只是以 root 身份运行我的脚本:sudo python myscript.py。我想我可以通过更改配置文件默认文件或目录来解决。
【讨论】: