@rolandDiskeyn

Почему chrome автоматически закрывается после завершения теста?

Начал изучать тестирование, использую 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()


Если написать тест без использования классов, тогда все работает как надо, подскажите пожалуйста, с чем это может быть связано?
  • Вопрос задан
  • 4401 просмотр
Решения вопроса 1
ScriptKiddo
@ScriptKiddo
Вполне возможно, потому что вы все делаете в __init__ методе.
Не нашел почему браузер закрывается, если делать так, как у вас

import time
from selenium import webdriver


class Test():
    def __init__(self):
        self.driver = webdriver.Chrome()

    def test_case(self):
        self.driver.get("https://stepik.org/lesson/25969/step/12")
        time.sleep(5)
        textarea = self.driver.find_element_by_css_selector(".textarea")
        textarea.send_keys('get()')
        time.sleep(1)

        submit_button = self.driver.find_element_by_css_selector(".submit-submission")
        submit_button.click()
        time.sleep(3)


if __name__ == '__main__':
    a = Test()
    a.test_case()


Лучший вариант - не использовать sleep в коде и запускать тесты через unittest. После каждого теста - нужно перезапускать инстанс браузера.

import unittest

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

wait_time = 20  # seconds


class TestStepik(unittest.TestCase):

    def setUp(self):
        self.driver = webdriver.Chrome()
        self.wait = WebDriverWait(self.driver, wait_time)

    def tearDown(self):
        self.driver.quit()

    def test_submit_button(self):
        self.driver.get("https://stepik.org/lesson/25969/step/12")
        textarea = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".textarea")))
        textarea.send_keys('get()')
        submit_button = self.driver.find_element_by_css_selector(".submit-submission")
        submit_button.click()
        self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".attempt-message_correct")))


if __name__ == '__main__':
    unittest.main()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы