Skip to content

Commit 881889d

Browse files
authored
Merge branch 'trunk' into py_add_cdp_event_sequence
2 parents fd171d1 + 01548e0 commit 881889d

File tree

1 file changed

+26
-26
lines changed

1 file changed

+26
-26
lines changed

py/conftest.py

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import pytest
2424

2525
from selenium import webdriver
26+
from selenium.common.exceptions import WebDriverException
2627
from selenium.webdriver.remote.server import Server
2728
from test.selenium.webdriver.common.network import get_lan_ip
2829
from test.selenium.webdriver.common.webserver import SimpleWebServer
@@ -101,7 +102,6 @@ def pytest_generate_tests(metafunc):
101102
metafunc.parametrize("driver", metafunc.config.option.drivers, indirect=True)
102103

103104

104-
driver_instance = None
105105
selenium_driver = None
106106

107107

@@ -276,7 +276,8 @@ def service(self):
276276

277277
@property
278278
def driver(self):
279-
self._driver = self._initialize_driver()
279+
if self._driver is None:
280+
self._driver = self._initialize_driver()
280281
return self._driver
281282

282283
@property
@@ -297,21 +298,15 @@ def _initialize_driver(self):
297298
kwargs["service"] = self.service
298299
return getattr(webdriver, self.driver_class)(**kwargs)
299300

300-
@property
301301
def stop_driver(self):
302-
def fin():
303-
global driver_instance
304-
if self._driver is not None:
305-
self._driver.quit()
306-
self._driver = None
307-
driver_instance = None
308-
309-
return fin
302+
driver_to_stop = self._driver
303+
self._driver = None
304+
if driver_to_stop is not None:
305+
driver_to_stop.quit()
310306

311307

312308
@pytest.fixture(scope="function")
313309
def driver(request):
314-
global driver_instance
315310
global selenium_driver
316311
driver_class = getattr(request, "param", "Chrome").lower()
317312

@@ -345,38 +340,43 @@ def driver(request):
345340

346341
request.addfinalizer(selenium_driver.stop_driver)
347342

348-
if driver_instance is None:
349-
driver_instance = selenium_driver.driver
350-
351-
yield driver_instance
352343
# Close the browser after BiDi tests. Those make event subscriptions
353344
# and doesn't seems to be stable enough, causing the flakiness of the
354345
# subsequent tests.
355346
# Remove this when BiDi implementation and API is stable.
356-
if selenium_driver.bidi:
347+
if selenium_driver is not None and selenium_driver.bidi:
357348
request.addfinalizer(selenium_driver.stop_driver)
358349

350+
yield selenium_driver.driver
351+
359352
if request.node.get_closest_marker("no_driver_after_test"):
360-
driver_instance = None
353+
if selenium_driver is not None:
354+
try:
355+
selenium_driver.stop_driver()
356+
except WebDriverException:
357+
pass
358+
except Exception:
359+
raise
360+
selenium_driver = None
361361

362362

363363
@pytest.fixture(scope="session", autouse=True)
364364
def stop_driver(request):
365365
def fin():
366-
global driver_instance
367-
if driver_instance is not None:
368-
driver_instance.quit()
369-
driver_instance = None
366+
global selenium_driver
367+
if selenium_driver is not None:
368+
selenium_driver.stop_driver()
369+
selenium_driver = None
370370

371371
request.addfinalizer(fin)
372372

373373

374374
def pytest_exception_interact(node, call, report):
375375
if report.failed:
376-
global driver_instance
377-
if driver_instance is not None:
378-
driver_instance.quit()
379-
driver_instance = None
376+
global selenium_driver
377+
if selenium_driver is not None:
378+
selenium_driver.stop_driver()
379+
selenium_driver = None
380380

381381

382382
@pytest.fixture

0 commit comments

Comments
 (0)