Селен: Виняток FirefoxProfile Не вдається завантажити профіль


96

За цим попереднім запитанням я оновив Selenium до версії 2.0.1 Але зараз у мене є інша помилка, навіть коли файли профілю існують під /tmp/webdriver-py-profilecopy:

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

Що не так? Як я можу вирішити цю проблему?

Відповіді:


132

Оновлення:

Команда Selenium виправлена ​​в останній версії. Майже для всіх середовищ виправлення:

піп установка -U селен

Незрозуміло, в якій версії це було виправлено (мабуть, r13122 ), але, безумовно, до 2.26.0 (на момент оновлення) це виправлено.


Ця помилка означає, що час _wait_until_connectable закінчується, оскільки чомусь код не може підключитися до розширення webdriver, завантаженого у firefox.

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

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


3
Додавання a sudoпотрібно, якщо ви не ввійшли як root. У всякому разі, це був рятівник! Дякую!!
Абхраніл Дас

Так, це допомагає виправити WebDriverException: Повідомлення: "Не вдається завантажити профіль.
tom joy

5
@AbhranilDas Вам не потрібно, sudoякщо ви використовуєте virtualenv(який ви, мабуть, повинні використовувати).
Кос

7
Ні, це рішення не працює з Firefox 45.0b та останньою селенією (2.5.1)
Alex GP

1
@ AlexG.P. Я вперше написав відповідь на це питання 4,5 роки тому. Я підозрюю, що минуло достатньо часу, що, можливо, варто поставити нове питання. Якщо ви це зробите, включте посилання на це запитання та: а) версії Firefox та Selenium, які ви вказали вище; б) ваша ОС; в) ваша версія pip. Я припускаю, що ваша проблема може бути пов’язана з піп-версією, оскільки вона змінилася за останні 5 років.
Рейчел

31

У мене був такий самий випуск після оновлення Ubuntu до 12.04.

Проблема була на стороні пакету та була виправлена ​​в останній версії бібліотеки. Просто оновіть бібліотеку селену. Для майже всіх середовищ Python це:

pip install -U selenium

Не знаю чому, але, маючи селен 2.28.0, у мене однакова проблема з FireFox 22.0 та 23.0 на Ubuntu. Тільки зменшення Firefox до 18.0 працює для мене добре (ніколи не перевіряв інші версії).
Дмитро

26

Я зіткнувся з тією ж проблемою з FF 32.0 та селеном селен-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

Це вирішило всі проблеми, і ця комбінація працює краще!


це виправило мою установку !!
Macumbaomuerte

Як знизити рівень Firefox на своєму mac? Я використовую скрап / селен на своєму mactop на "virtualenv" і маю ту саму помилку. Я думаю, якби я погіршив свій комп'ютер, це це виправить.
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

Якщо ви використовуєте веб-драйвер від 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 / папки були доступні лише користувачу root. Робивши chmod 770 ~/.mozilla/фокус. Я б радив переконатися, що це не проблема, перш ніж усувати помилки далі.


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), оскільки селен 2.53 не буде працювати для firefox версії 47.0 і вище.


-1

Це не належне рішення, але мені вдалося, якщо хтось може вдосконалити, я був би радий це знати. Я просто запустити свій сценарій як корінь: sudo python myscript.py. Я думаю, я можу вирішити, змінивши файл за замовчуванням профілю або каталог може працювати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.