Selenium: исключение FirefoxProfile Не удается загрузить профиль
Per этот предыдущий вопрос Я обновил Selenium до версии 2.0.1
Но теперь у меня есть еще одна ошибка, даже если файлы профиля существуют под /tmp/webdriver-py-profilecopy
:
File "/home/sultan/Repository/Django/monitor/app/request.py", line 236, in perform
browser = Firefox(profile)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 46, in __init__
self.binary, timeout),
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/extension_connection.py", line 46, in __init__
self.binary.launch_browser(self.profile)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 44, in launch_browser
self._wait_until_connectable()
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 87, in _wait_until_connectable
raise WebDriverException("Can't load the profile. Profile Dir : %s" % self.profile.path)
selenium.common.exceptions.WebDriverException: Can't load the profile. Profile Dir : /tmp/webdriver-py-profilecopy
Что не так? Как я могу решить эту проблему?
Ответы
Ответ 1
Update:
Selenium team исправлена в последней версии. Для почти всех сред исправить:
pip install -U selenium
Неясно, в какой версии исправлено (по-видимому, r13122), но, конечно же, на 2.26.0 (текущий во время обновления) это исправлена.
Эта ошибка означает, что _wait_until_connectable синхронизируется, потому что по какой-то причине код не может подключиться к расширению webdriver, которое было загружено в firefox.
Я только что сообщил об ошибке для селена, где я получаю эту ошибку, потому что я пытаюсь использовать прокси, и только 2 из 4 настроенных изменений в профиле были приняты firefox, поэтому прокси не настроен поговорить с расширением. Не знаю, почему это происходит...
https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/2061
Ответ 2
У меня была такая же проблема после обновления Ubuntu до 12.04.
Проблема была на стороне пакета и исправлена в последней версии библиотеки. Просто обновите библиотеку селена. Для почти всех сред Python это:
pip install -U selenium
Ответ 3
У меня была та же проблема с 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
Это позволило решить все проблемы, и эта комбинация работает лучше!
Ответ 4
В качестве расширения для ответа Jeff Hoye более "путинский" способ будет заключаться в подклассе 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 answer
return path
Затем, чтобы создать ваш драйвер:
driver = webdriver.Firefox(firefox_profile=CygwinFirefoxProfile())
Ответ 5
Если pip install -U selenium
не работает (в моем случае это не помогло), попробуйте переопределить Firefox до предыдущей версии.
У меня был Firefox 49.0 и понизился до 45.0, чтобы убедиться, что версия поддерживается селеном. Тогда он работал отлично.
Вот быстрый способ понизить до Firefox 45.0:
sudo apt-get install firefox=45.0.2+build1-0ubuntu1
Надеюсь, что это поможет.
Ответ 6
Если вы запускаете webdriver из cygwin, проблема в том, что путь к профилю все еще находится в формате 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 даже не близок к моему основному языку программирования, если кто-то может порекомендовать более пифонический подход, возможно, мы сможем его распространить. Это было бы удобно, если бы он работал в cygwin прямо из коробки.
Ответ 7
У меня была такая же проблема, и я подумал, что это неправильная комбинация селена /Firefox. Оказалось, что мои разрешения .mozilla/folder доступны только для пользователя root. Выполнение chmod 770 ~/.mozilla/
сделало трюк. Я бы посоветовал убедиться, что это не проблема, прежде чем устранять неполадки.
Ответ 8
pip install -U selenium
У меня была эта же проблема с Firefox 34.0.5 (Dec 1, 2014)
и обновление Selenium от 2.42.1
до 2.44.0
разрешило мою проблему.
Однако, я уже видел эту проблему снова, я думаю, что с 2.44.0, и еще одно обновление исправлено. Поэтому мне интересно, можно ли его устранить, просто удалив и переустановив. Если это так, я не уверен, что это будет указывать на основную проблему.
Ответ 9
Я использовал селен 2.53 и firefox версию 55.0. Я решил эту проблему, установив более старую версию firefox (46.0.1), так как selenium 2.53 не будет работать для Firefox версии 47.0 и выше.
Ответ 10
Это не правильное решение, но работало для меня, если кто-то может улучшить, я был бы рад узнать. Я просто запускаю свой script как root: sudo python myscript.py
. Я думаю, что я могу решить, изменив файл профиля по умолчанию, или каталог может работать.