Как можно открыть новое окно браузера при каждой итераций?

Привет,
Как я могу открывать новое окно браузера при каждой итераций, я пробовал это сделать со следующим кодом:

class GoogleTest(unittest.TestCase):

    def setUp(self):
        self.browser = webdriver.Chrome('/home/andrey/Downloads/chromedriver')
        self.wait = WebDriverWait(self.browser, 20)
        self.browser.implicitly_wait(30)

    def test_01_goole(self):
        for i in range(3):
            browser = self.browser
            browser.get('http://www.google.com')
            browser.close()
            

К сожалению я получаю ошибку:

WebDriverException: Message: no such session

работает только перед каждым тестом в сьюте!!!

ok какое решение предложишь? Кроме того что я могу засунуть сам browser в цикл… попробовать setUpClass?

Выполняется один раз перед выполнением всего сьюта, изучаем матчасть уважаемый!
Если хочешь закрывать и открывать в цикле, то делай это все в цикле!!!

Значит каждый тест ты хочешь сказать что я должен в цикле указывать браузер???

Естественно, после close() уничтожается сессия, ты ее должен создать по новой!!!

1 лайк

В первой же итерации цикла ты убиваешь браузер, дальше объект browser уже не прикреплен ни к какой сессии браузера, и ты ловишь ошибку.

Решение - не делай browser.close() в тесте, делай после теста в tearDown()

Попытался не идет…:

class GoogleTest(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        cls.browser = webdriver.Chrome('/home/andrey/Downloads/chromedriver')
        cls.wait = WebDriverWait(cls.browser, 20)
        cls.browser.implicitly_wait(30)

    def test_01_google(self):
        for i in range(3):
            browser = self.browser
            browser.get('http://www.google.com')

    def tearDown(self):
        self.browser.close()

Естественно оно так не будет работать. Ты в цикле обращаешься к одному из тому же экземпляру класса драйвера. Тебе в цикле нужно создавать новый экземпляр класса при каждой итерации.

Еще как костыль можно через JS создавать новое окно и на него переключаться драйвером)

1 лайк

А зачем тебе открывать браузер несколько раз для одного теста?
Перенеси инициализацию драйвера из setUp в начало цикла

for i in range(3):
            self.browser = webdriver.Chrome('/home/andrey/Downloads/chromedriver')
            browser = self.browser
            browser.get('http://www.google.com')
            browser.close()
1 лайк