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. Я думаю, что я могу решить, изменив файл профиля по умолчанию, или каталог может работать.