Селен: исключение FirefoxProfile Не удается загрузить профиль

96

В соответствии с этим предыдущим вопросом я обновил Selenium до версии 2.0.1, но теперь у меня есть еще одна ошибка, даже если файлы профиля существуют в /tmp/webdriver-py-profilecopy:

  Файл "/home/sultan/Repository/Django/monitor/app/request.py", строка 236, выполняется
    browser = 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 (собственный профиль)
  Файл "/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
    Raise WebDriverException ("Не могу загрузить профиль. Каталог профиля:% s"% self.profile.path)
selenium.common.exceptions.WebDriverException: не удается загрузить профиль. Директория профиля: / tmp / webdriver-py-profilecopy

Что случилось? Как я могу решить эту проблему?

султан
источник

Ответы:

132

Обновить:

Команда Selenium исправлена ​​в последней версии. Исправление почти для всех сред:

pip install -U selenium

Неясно, в какой версии он был исправлен (очевидно, r13122 ), но, безусловно, в 2.26.0 (текущая на момент обновления) он исправлен.


Эта ошибка означает, что у _wait_until_connectable истекает время ожидания, потому что по какой-то причине код не может подключиться к расширению webdriver, которое было загружено в firefox.

Я только что сообщил об ошибке в selenium, где я получаю эту ошибку, потому что я пытаюсь использовать прокси, и только 2 из 4 настроенных изменений в профиле были приняты firefox, поэтому прокси не настроен для разговора с расширение. Не уверен, почему это происходит ...

https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/2061

Рэйчел
источник
3
Добавление sudoтребуется, если вы не вошли в систему как root. В любом случае, это была палочка-выручалочка! Спасибо!!
Абхранил Дас
Да, это помогает исправить исключение WebDriverException: Сообщение: «Не удается загрузить профиль.
tom joy
5
@AbhranilDas Вам не нужно, sudoесли вы используете virtualenv(который, вероятно, вам следует использовать).
Кос,
7
Нет, это решение не работает с Firefox 45.0b и последней версией Selenium (2.5.1)
Alex GP
1
@ AlexG.P. Впервые я написал ответ на этот вопрос 4,5 года назад. Я подозреваю, что прошло достаточно времени, и, возможно, стоит задать новый вопрос. Если да, включите ссылку на этот вопрос и: a) версии Firefox и Selenium, которые вы указали выше; б) ваша ОС; c) ваша версия pip. Я предполагаю, что ваша проблема может быть связана с версией pip, потому что за последние 5 лет она изменилась.
Рэйчел
31

У меня была такая же проблема после обновления Ubuntu до 12.04.

Проблема была на стороне пакета и исправлена ​​в последней версии библиотеки. Просто обновите библиотеку селена. Почти для всех сред Python это:

pip install -U selenium
user1380597
источник
Не знаю почему, но с Selenium 2.28.0 у меня такая же проблема с FireFox 22.0 и 23.0 на Ubuntu. У меня отлично работает только понижение версии Firefox до 18.0 (другие версии не проверял).
Дмитрий
26

Я столкнулся с той же проблемой с 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

Это решило все проблемы, и эта комбинация работает лучше!

Mijo
источник
это исправило мою установку !!
Macumbaomuerte,
Как мне перейти на более раннюю версию Firefox на моем Mac? Я использую scrapy / selenium на моем mactop на 'virtualenv' и имею ту же ошибку. Я думаю, если бы я понизил версию своего Mac, это исправило бы.
brkr
8

В качестве расширения ответа Джеффа Хоя более «питоническим» способом было бы подклассы 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())
Джоэл Кросс
источник
5

Если pip install -U seleniumне работает (в моем случае это не так), попробуйте понизить версию Firefox до предыдущей.

У меня был Firefox 49.0, и я понизил его до 45.0, чтобы убедиться, что версия поддерживается селеном. Тогда это сработало отлично.

Вот быстрый способ перейти на Firefox 45.0:

sudo apt-get install firefox=45.0.2+build1-0ubuntu1

Надеюсь это поможет.

Крис
источник
4

Если вы запускаете 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 прямо из коробки.

Джефф Хой
источник
3

У меня была такая же проблема, и я считал, что это неправильная комбинация селена / Firefox. Оказалось, что мои разрешения .mozilla / folder были доступны только пользователю root. Это chmod 770 ~/.mozilla/сделало свое дело. Я бы посоветовал убедиться, что проблема не в этом, прежде чем устранять неполадки.

chillwx
источник
1

pip install -U selenium

У меня была такая же проблема с Firefox 34.0.5 (Dec 1, 2014)обновлением Selenium с, 2.42.1чтобы 2.44.0решить мою проблему.

Однако с тех пор я снова сталкивался с этой проблемой, я думаю, с 2.44.0, и другое обновление исправило ее. Поэтому мне интересно, можно ли это исправить, просто удалив, а затем повторно установив. Если это так, я не уверен, что это указывает на основную проблему.

Роб Беднарк
источник
У меня такая же проблема с 2.44 и ff35 в окнах
pylover
0

Я использовал селен 2.53 и firefox 55.0. Я решил эту проблему, установив более старую версию firefox (46.0.1), поскольку selenium 2.53 не будет работать для Firefox версии 47.0 и выше.

Рашид
источник
-1

Это неправильное решение, но сработало для меня, если кто-то сможет улучшить, я был бы рад узнать. Я просто запустить свой сценарий как корень: sudo python myscript.py. Думаю, я могу решить эту проблему, изменив файл профиля или каталог по умолчанию.


источник