@@ -78,6 +78,7 @@ def __init__(self, *args, **kwargs):
78
78
self ._page_check_count = 0
79
79
self ._page_check_failures = []
80
80
self ._html_report_extra = []
81
+ self ._extra_drivers = []
81
82
82
83
def open (self , url ):
83
84
self .driver .get (url )
@@ -1438,6 +1439,39 @@ def switch_to_default_content(self):
1438
1439
def save_screenshot (self , name , folder = None ):
1439
1440
return page_actions .save_screenshot (self .driver , name , folder )
1440
1441
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
+
1441
1475
############
1442
1476
1443
1477
def _get_new_timeout (self , timeout ):
@@ -1909,8 +1943,14 @@ def tearDown(self):
1909
1943
if self .with_page_source :
1910
1944
log_helper .log_page_source (
1911
1945
test_logpath , self .driver )
1912
- # Finally close the browser
1913
1946
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
1914
1954
self .driver .quit ()
1915
1955
except AttributeError :
1916
1956
pass
@@ -1957,6 +1997,12 @@ def tearDown(self):
1957
1997
# Using Nosetests
1958
1998
try :
1959
1999
# 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
1960
2006
self .driver .quit ()
1961
2007
except AttributeError :
1962
2008
pass
0 commit comments