Selenium в Django на Linux - Ubuntu
У меня проблема с python selenium в Django, когда мой проект работает на apache2 - Ubuntu Desktop. Мое приложение отправляет формы скрипту selenium, который сбрасывает пароль пользователя. Если я запускаю сервер следующим образом python3 manage.py runserver все в порядке и работает хорошо. Когда приложение работает на apache, я получаю ошибку следующего вида:
Exception Type: TimeoutException Exception Value: Message: Failed to read marionette port
Я отправляю формы - "имя" и "ID" из функции 'submitmyfrom' в 'reset_user_pw'.
view.py:
def submitmyfrom(request):
form = FormsReset(request.POST)
my_name = request.POST['name']
my_id = request.POST['id']
ip = request.META.get('REMOTE_ADDR')
if len(id) < 12:
passwd = reset_user_pw(user_name=my_name)
mydictionary = {
"my_name" : my_name,
"my_id" : my_id,
'password' : passwd
}
return render(request,'submitmyfrom.html', context=mydictionary)
reset_user_pw:
def reset_user_pw(user_name):
os.environ['MOZ_HEADLESS'] = '1'
pwd = mypwd
LoginName = "login"
user_login = user_name
cert = webdriver.FirefoxProfile()
cert.accept_untrusted_certs = True
web = webdriver.Firefox(executable_path='/var/www/my_project/src/geckodriver',
log_path='/var/www/my_project/src/Reset/geckodriver.log',
service_log_path='/var/www/my_project/src/myapp/geckodriver.log')
web.get('https://example.com/test')
time.sleep(1)
далее остальная часть функции reset_user_pw Я использую firefox и в идеале хотел бы остаться с ним
Что я могу сделать, чтобы он работал на apache2. Напоминаю, что на python3 manage.py runserver работает нормально
Проблема, с которой вы столкнулись при использовании Selenium в Django при запуске приложения на Apache2, связана с тем, что переменная окружения MOZ_HEADLESS не установлена должным образом.
Чтобы решить эту проблему, необходимо убедиться, что переменная окружения MOZ_HEADLESS установлена перед запуском скрипта. Один из способов сделать это - установить переменную окружения в конфигурационном файле Apache, который обычно находится по адресу /etc/apache2/envvars.
Добавьте следующую строку в файл:
export MOZ_HEADLESS=1
Затем перезапустите Apache для применения изменений:
sudo systemctl restart apache2
Это должно решить проблему и позволить скрипту работать правильно, когда приложение запущено на Apache2.