Автоматическое закрытие браузера после выполнения теста

Начал изучать тестирование, использую selenium + python для автоматизации, заметил такую проблему, если сам тест описывать в классе, то по завершению теста, браузер автоматически закрывается.

import unittest
import time
from selenium import webdriver

class Test():
    def __init__(self):
        driver = webdriver.Chrome(executable_path=r'C:\Users\****** *****\Desktop\kodtest\python\AutoTesting\chromedriver.exe')
        time.sleep(1)

        driver.get("https://stepik.org/lesson/25969/step/12")
        time.sleep(5)

        textarea = driver.find_element_by_css_selector(".textarea")
        textarea.send_keys('get()')
        time.sleep(1)

        submit_button = driver.find_element_by_css_selector(".submit-submission")

        submit_button.click()
        time.sleep(3)

Test()

Если написать тест без использования классов, тогда все работает как надо, подскажите пожалуйста, с чем это может быть связано?


Ответы (2 шт):

Автор решения: Dmitry Volkov

Сам столкнулся с подобной проблемой, помогло банально использование Firefox вместо Chrome. Честно говорю, почему конкретно так происходит не знаю. Еще не разбирался но фак на лицо если использовать Firefox ну и соответственно rgeckodriver.exe вместо chromedriver.exe, то браузер не закрываеться после завершения теста.

→ Ссылка
Автор решения: Clark Devlin

Закрытие происходит из-за того, что переменная экземпляра webdriver.Chrome становится мусором, после отработки кода. Экземпляр класса selenium.webdriver.Chrome содержит экземпляр класса Service. У последнего есть метод __del__ который вызывается, когда экземпляр разрушается во время процесса сбора мусора. Метод, в свою очередь, останавливает службу и заставляет окно браузера Chrome закрываться. Из возможных решений: сделать переменную driver глобальной либо переписать метод __del__

→ Ссылка