Selenium: FirefoxProfile исключение Не могу загрузить профиль - PullRequest
95 голосов
/ 13 июля 2011

За этот предыдущий вопрос Я обновил 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

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

Ответы [ 10 ]

132 голосов
/ 15 июля 2011

Обновление:

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

pip install -U selenium

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


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

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

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

31 голосов
/ 08 мая 2012

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

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

pip install -U selenium
26 голосов
/ 03 сентября 2014

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

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

8 голосов
/ 19 июля 2012

В качестве дополнения к ответу Джеффа Хойе , более "питоническим" способом будет подкласс 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 голосов
/ 02 октября 2016

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

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

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

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

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

4 голосов
/ 19 июня 2012

Если вы используете 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 голосов
/ 19 февраля 2016

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

1 голос
/ 21 декабря 2014

pip install -U selenium

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

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

0 голосов
/ 28 сентября 2017

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

0 голосов
/ 14 октября 2015

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...