为了我的研究,我对Firefox进行了一些源代码修改并进行了自己的构建。为了自动化测试,我选择使用Selenium,但不幸的是,我的新构建的Firefox似乎不支持Selenium。
我做了以下事情:
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
binary = FirefoxBinary("/path/to/firefox/binary")
d = webdriver.Firefox(firefox_binary=binary)
d.get("http://www.google.de")
火狐浏览器可以正常打开并响应(我可以在搜索栏中输入网站)。 但是过一段时间,python脚本会崩溃,并显示以下错误消息:
Traceback (most recent call last):
File "firefox.py", line 7, in <module>
d = webdriver.Firefox(firefox_binary=binary)
File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/firefox/webdriver.py", line 59, in __init__
self.binary, timeout),
File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/firefox/extension_connection.py", line 47, in __init__
self.binary.launch_browser(self.profile)
File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 66, in launch_browser
self._wait_until_connectable()
File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 109, in _wait_until_connectable
raise WebDriverException("Can't load the profile. Profile "
selenium.common.exceptions.WebDriverException: Message: Can't load the profile. Profile Dir: %s If you specified a log_file in the FirefoxBinary constructor, check it for details.
我查了一下这个错误信息,大多数解决方案建议更新Selenium,因为它不支持所使用的Firefox版本。不幸的是,我安装了最新版本的Selenium(2.44.0),甚至使用了较旧的Firefox版本(版本33)来排除这个问题。
我还确保我的代码修改不是导致崩溃的原因,通过构建一个干净、未修改的Firefox。但是Selenium也无法与此Firefox工作。
如果我不指定Firefox二进制文件并让Selenium使用已安装的Firefox,则一切正常。所以我猜测,Firefox构建可能有问题,我按照在线文档中提到的步骤进行了构建(例如./mach build)。
有没有人知道我的错误可能是什么?非常感谢任何帮助!
一些设置信息: - Firefox 33 - Selenium 2.44.0 - Python 3.4(也尝试过2.7,也不能工作) - 使用Ubuntu 14.04构建Firefox