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