dron4ik
February 9, 2017, 2:05pm
#1
Привет,
Как я могу открывать новое окно браузера при каждой итераций, я пробовал это сделать со следующим кодом:
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
RayRom
(Ray Romanov)
February 9, 2017, 2:14pm
#2
dron4ik:
def setUp(self):
работает только перед каждым тестом в сьюте!!!
dron4ik
February 9, 2017, 2:21pm
#3
ok какое решение предложишь? Кроме того что я могу засунуть сам browser в цикл… попробовать setUpClass?
RayRom
(Ray Romanov)
February 9, 2017, 2:24pm
#4
dron4ik:
setUpClass
Выполняется один раз перед выполнением всего сьюта, изучаем матчасть уважаемый!
Если хочешь закрывать и открывать в цикле, то делай это все в цикле!!!
dron4ik
February 9, 2017, 2:45pm
#5
Значит каждый тест ты хочешь сказать что я должен в цикле указывать браузер???
RayRom
(Ray Romanov)
February 9, 2017, 2:47pm
#6
Естественно, после close() уничтожается сессия, ты ее должен создать по новой!!!
1 Like
xotabu4
(Oleksandr Khotemskyi)
February 9, 2017, 2:50pm
#7
В первой же итерации цикла ты убиваешь браузер, дальше объект browser уже не прикреплен ни к какой сессии браузера, и ты ловишь ошибку.
Решение - не делай browser.close() в тесте, делай после теста в tearDown()
dron4ik
February 9, 2017, 3:11pm
#8
Попытался не идет…:
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()
rmerkushin
(rmerkushin)
February 10, 2017, 4:12am
#9
Естественно оно так не будет работать. Ты в цикле обращаешься к одному из тому же экземпляру класса драйвера. Тебе в цикле нужно создавать новый экземпляр класса при каждой итерации.
Еще как костыль можно через JS создавать новое окно и на него переключаться драйвером)
1 Like
serputko
(Anton Serputko)
February 11, 2017, 10:15am
#10
А зачем тебе открывать браузер несколько раз для одного теста?
Перенеси инициализацию драйвера из 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 Like