Автоматическое закрытие браузера после выполнения теста
Начал изучать тестирование, использую 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 шт):
Сам столкнулся с подобной проблемой, помогло банально использование Firefox вместо Chrome. Честно говорю, почему конкретно так происходит не знаю. Еще не разбирался но фак на лицо если использовать Firefox ну и соответственно rgeckodriver.exe вместо chromedriver.exe, то браузер не закрываеться после завершения теста.
Закрытие происходит из-за того, что переменная экземпляра webdriver.Chrome становится мусором, после отработки кода. Экземпляр класса selenium.webdriver.Chrome содержит экземпляр класса Service. У последнего есть метод __del__ который вызывается, когда экземпляр разрушается во время процесса сбора мусора. Метод, в свою очередь, останавливает службу и заставляет окно браузера Chrome закрываться. Из возможных решений: сделать переменную driver глобальной либо переписать метод __del__