Django и Selenium парсер (с авторизацией)

Как вернуть в функцию WebDriver? повторно не вызывая функцию login.

task.py

def login(url):
    driver = webdriver.Chrome(service=service,options=options)
    driver.maximize_window()
    driver.get(url)
    driver.find_element(By.ID,"login").send_keys(LOGIN)
    driver.find_element(By.ID,"password").send_keys(PASSWORD)
    driver.find_element(By.ID,'bind').click()
    return driver

def form_fill(url_pars,driver,name_flat):
    driver.get(url_pars)
    driver.find_element(By.ID,"epd_field").click()
    codplat=driver.find_element(By.CLASS_NAME,"home_right").text
    driver.find_element(By.XPATH,'//span[contains(text(),"name_flat}")]'.
    format( name_flat)).click()
    driver.find_element(By.CLASS_NAME,"js-find-btn").click()
    driver.find_element(By.CLASS_NAME,"js-more-btn").click()
    driver.find_element(By.CLASS_NAME,"btn-close-pop").click()
    return [driver,codplat]

views.py

class AuthView(TemplateView):
    template_name="mos_sel/login.html"
    
    def get_context_data(self, **kwargs) :
        context=super().get_context_data(**kwargs)
        auth=AuthView(login(URL_LOGIN)) # в auth =WebDriver 
        return context 


class PaymentListView(ListView):
    template_name='mos_sel/parse_list.html'
    model=Flat
    context_object_name='fields'
        
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['name_flat']=Flat.objects.get(pk=self.kwargs['pk']).name_flat 
        # Как передать в функцию WebDriver = auth ???
        forma_fill=form_fill(GET_USLUGA_URL,auth,context['name_flat'].upper()) 
        return context

login.html

{% extends "base.html" %}
{% block content %}
<h3>Войти в личный кабинет на mos.ru</h3>
<a href="{% url 'AuthView' %}"><button type="button" class="btn-success">Войти</button></a>
{% endblock content %}

parse_list.html

{% extends "base.html" %}
{% block sidebar %}
<h5>{{name_flat}}</h5>
{% for field in fields  %}
{{field.cod_platelshika}}
{{field.period_oplaty}}
{{field.summa}}
{% endfor %}
{% endblock sidebar %}

Божечки…

Да просто выведи driver за функцию login() и передавай в неё параметр также как это делается для form_fill().
А сам driver вызывай там, где идёт вызов функций.

⛔ Стоп. А зачем в views.py вызывать ? В чём смысл? Тесты делаются немного не так.

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