Skip to content

Commit bb4d970

Browse files
committed
Add ability to spin up extra browsers in tests
1 parent c8aa891 commit bb4d970

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

help_docs/method_summary.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,9 @@ self.switch_to_default_content()
254254

255255
self.save_screenshot(name, folder=None)
256256

257+
self.get_new_driver(browser=None, headless=None, servername=None, port=None,
258+
proxy_string=None)
259+
257260
########
258261

259262
self.delayed_assert_element(selector, by=By.CSS_SELECTOR,

seleniumbase/fixtures/base_case.py

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ def __init__(self, *args, **kwargs):
7878
self._page_check_count = 0
7979
self._page_check_failures = []
8080
self._html_report_extra = []
81+
self._extra_drivers = []
8182

8283
def open(self, url):
8384
self.driver.get(url)
@@ -1438,6 +1439,39 @@ def switch_to_default_content(self):
14381439
def save_screenshot(self, name, folder=None):
14391440
return page_actions.save_screenshot(self.driver, name, folder)
14401441

1442+
def get_new_driver(self, browser=None, headless=None,
1443+
servername=None, port=None,
1444+
proxy_string=None):
1445+
""" This method spins up an extra browser for tests that require
1446+
more than one. The first browser is already provided by tests
1447+
that import base_case.BaseCase from seleniumbase. """
1448+
if browser is None:
1449+
browser = self.browser
1450+
if headless is None:
1451+
headless = self.headless
1452+
if servername is None:
1453+
servername = self.servername
1454+
if port is None:
1455+
port = self.port
1456+
if proxy_string is None:
1457+
proxy_string = self.proxy_string
1458+
use_grid = False
1459+
if servername != "localhost":
1460+
# Use Selenium Grid (Use --server=127.0.0.1 for localhost Grid)
1461+
use_grid = True
1462+
valid_browsers = constants.ValidBrowsers.valid_browsers
1463+
if browser not in valid_browsers:
1464+
raise Exception("Browser: {%s} is not a valid browser option. "
1465+
"Valid options = {%s}" % (browser, valid_browsers))
1466+
new_driver = browser_launcher.get_driver(browser,
1467+
headless,
1468+
use_grid,
1469+
servername,
1470+
port,
1471+
proxy_string)
1472+
self._extra_drivers.append(new_driver)
1473+
return new_driver
1474+
14411475
############
14421476

14431477
def _get_new_timeout(self, timeout):
@@ -1909,8 +1943,14 @@ def tearDown(self):
19091943
if self.with_page_source:
19101944
log_helper.log_page_source(
19111945
test_logpath, self.driver)
1912-
# Finally close the browser
19131946
try:
1947+
# Finally close the browser
1948+
if self._extra_drivers:
1949+
for extra_driver in self._extra_drivers:
1950+
try:
1951+
extra_driver.quit()
1952+
except Exception:
1953+
pass # Extra driver was already quit
19141954
self.driver.quit()
19151955
except AttributeError:
19161956
pass
@@ -1957,6 +1997,12 @@ def tearDown(self):
19571997
# Using Nosetests
19581998
try:
19591999
# Finally close the browser
2000+
if self._extra_drivers:
2001+
for extra_driver in self._extra_drivers:
2002+
try:
2003+
extra_driver.quit()
2004+
except Exception:
2005+
pass # Extra driver was already quit
19602006
self.driver.quit()
19612007
except AttributeError:
19622008
pass

0 commit comments

Comments
 (0)