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.

Вернуться на верх