it-roy-ru.com

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

По этот предыдущий вопрос я обновил 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, timeout), 
 Файл "/usr/local/lib/python2.7/dist-packages/Selenium/webdriver/firefox/extension_connection.py", строка 46, в __init __
 self.binary.launch_browser (self.profile) 
 Файл "/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 
 поднять WebDriverException ("Не удается загрузить профиль. Профиль Dir:% s"% self.profile.path) 
 Selenium.common.exceptions.WebDriverException: Не удается загрузить профиль. Профиль Dir: /tmp/webdriver-py-profilecopy

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

95
sultan

Обновление:

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

pip install -U Selenium

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


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

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

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

132
Rachel

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

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

pip install -U Selenium
31
user1380597

Я столкнулся с той же проблемой с FF 32.0 и Selenium selenium-2.42.1-py2.7.Egg. Пытался обновить Selenium, но это уже последняя версия . Решением было понизить 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

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

25
Mijo

В качестве дополнения к ответу Джеффа Хойе , более "питонским" способом будет подкласс 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())
8
Joel Cross

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

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

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

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

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

5
Chris

Если вы используете 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 даже не близок к моему основному языку программирования, если кто-то может порекомендовать более Pythonic подход, возможно, мы сможем внедрить его в дистрибутив. Это было бы удобно, если бы он работал в Cygwin прямо из коробки.

4
Jeff Hoye

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

3
chillwx

pip install -U Selenium

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

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

1
Rob Bednark

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

0
Rashid