Мой скрипт 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.
Это происходит потому, что вы обновили Firefox до версии, которая больше не поддерживается селеном.
Таким образом, чтобы исправить это у вас есть 2 варианта.
Если у вас есть 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
Если это не решило проблему, проверьте имя своего профиля в Firefox.
как это
fp = webdriver.FirefoxProfile('/home/YOUR_USERNAME/.mozilla/firefox/YOUR_PROFILE_NAME.default')
driver = webdriver.Firefox(firefox_profile=fp)
Чтобы найти имя вашего профиля Firefox, откройте браузер файлов и включите «показывать скрытые файлы», перейдите в «Home / .mozilla / firefox», и вы увидите папку вашего профиля Firefox.
Я надеюсь, что решил вашу проблему