Selenium: FirefoxProfile исключение Не могу загрузить профиль. Сценарий Python, вызванный из переполнения стека

Мой скрипт Python имеет следующий код:

firefox_profile = webdriver.FirefoxProfile()
self.driver = webdriver.Firefox(firefox_profile=firefox_profile)

Когда я выполняю скрипт из bash, он работает, но если я вызываю скрипт из файла PHP, с помощью следующей команды:

shell_exec("python path_to_the_script");

Я получаю исключение:

selenium.common.exceptions.WebDriverException: Message: Can't load the profile. Profile Dir: /tmp/tmp7Ob0z6/webdriver-py-profilecopy If you specified a log_file in the FirefoxBinary constructor, check it for details.

Я также попытался установить профиль вручную, например так:

 firefox_profile = webdriver.FirefoxProfile(profile_directory='path_to_the_profile_dir')

Но ничего не изменилось, если я установлю путь к каталогу профиля следующим образом:

firefox_profile = webdriver.FirefoxProfile(profile_directory='path_to_the_profile_dir')
firefox_profile.profile_dir = 'path_to_the_profile_dir'

Ошибка исключения изменяется на это:

selenium.common.exceptions.WebDriverException: Message: Can't load the profile. Profile Dir: path_to_the_profile_dir If you specified a log_file in the FirefoxBinary constructor, check it for details.

Я установил разрешения 777 для всех задействованных каталогов, а также попытался переопределить FirefoxBinary.launch_browser Функция так, чтобы он использовал большее значение тайм-аута, но идентификатор не работал.
Я использую Python 2.7, Selenium 2.53.6 и Firefox 46.0.1

Firefox работает в автономном режиме, через Xvfb и pyvirtualdisplay.

1

Решение

Это происходит потому, что вы обновили Firefox до версии, которая больше не поддерживается селеном.

Таким образом, чтобы исправить это у вас есть 2 варианта.

  1. Понизьте ваш Firefox до более старой версии, чем 47
  2. Обновите Selenium и установите geckodriver (рекомендуется и просто)

Если у вас есть Ubuntu, следуйте этому исправлению ниже:
1. Обновите селен с помощью команды «sudo pip install -U selenium»
2. Загрузите geckodriver с github ->
Gecko Github Ссылка

3. Извлеките папку tar.gz и переместите исполняемый файл gecko в / usr / local / bin

4. Теперь откройте свой терминал и введите эту команду:
export PATH=$PATH:/usr/local/bin/geckodriver

Это должно решить проблему … по крайней мере, это сработало для меня.

Мой источник: StackOverflow — Geckodriver

1

Другие решения

Если это не решило проблему, проверьте имя своего профиля в Firefox.

как это

fp = webdriver.FirefoxProfile('/home/YOUR_USERNAME/.mozilla/firefox/YOUR_PROFILE_NAME.default')
driver = webdriver.Firefox(firefox_profile=fp)

Чтобы найти имя вашего профиля Firefox, откройте браузер файлов и включите «показывать скрытые файлы», перейдите в «Home / .mozilla / firefox», и вы увидите папку вашего профиля Firefox.

Я надеюсь, что решил вашу проблему

0

По вопросам рекламы [email protected]