@@ -4122,6 +4122,7 @@ def setUp(self, masterqa_mode=False):
41224122 self .extension_zip = sb_config .extension_zip
41234123 self .extension_dir = sb_config .extension_dir
41244124 self .maximize_option = sb_config .maximize_option
4125+ self ._reuse_session = sb_config .reuse_session
41254126 self .save_screenshot_after_test = sb_config .save_screenshot
41264127 self .visual_baseline = sb_config .visual_baseline
41274128 self .timeout_multiplier = sb_config .timeout_multiplier
@@ -4192,21 +4193,50 @@ def setUp(self, masterqa_mode=False):
41924193 if self .settings_file :
41934194 settings_parser .set_settings (self .settings_file )
41944195
4195- # Launch WebDriver for both Pytest and Nosetests
4196- self .driver = self .get_new_driver (browser = self .browser ,
4197- headless = self .headless ,
4198- servername = self .servername ,
4199- port = self .port ,
4200- proxy = self .proxy_string ,
4201- agent = self .user_agent ,
4202- switch_to = True ,
4203- cap_file = self .cap_file ,
4204- disable_csp = self .disable_csp ,
4205- enable_sync = self .enable_sync ,
4206- user_data_dir = self .user_data_dir ,
4207- extension_zip = self .extension_zip ,
4208- extension_dir = self .extension_dir )
4209- self ._default_driver = self .driver
4196+ has_url = False
4197+ if self ._reuse_session :
4198+ if not hasattr (sb_config , 'shared_driver' ):
4199+ sb_config .shared_driver = None
4200+ if sb_config .shared_driver :
4201+ try :
4202+ self ._default_driver = sb_config .shared_driver
4203+ self .driver = sb_config .shared_driver
4204+ self ._drivers_list = [sb_config .shared_driver ]
4205+ url = self .get_current_url ()
4206+ if len (url ) > 3 :
4207+ has_url = True
4208+ except Exception :
4209+ pass
4210+
4211+ if self ._reuse_session and sb_config .shared_driver and has_url :
4212+ if self .start_page and len (self .start_page ) >= 4 :
4213+ if page_utils .is_valid_url (self .start_page ):
4214+ self .open (self .start_page )
4215+ else :
4216+ new_start_page = "http://" + self .start_page
4217+ if page_utils .is_valid_url (new_start_page ):
4218+ self .open (new_start_page )
4219+ else :
4220+ if self .get_current_url () != "data:," :
4221+ self .open ("data:," )
4222+ else :
4223+ # Launch WebDriver for both Pytest and Nosetests
4224+ self .driver = self .get_new_driver (browser = self .browser ,
4225+ headless = self .headless ,
4226+ servername = self .servername ,
4227+ port = self .port ,
4228+ proxy = self .proxy_string ,
4229+ agent = self .user_agent ,
4230+ switch_to = True ,
4231+ cap_file = self .cap_file ,
4232+ disable_csp = self .disable_csp ,
4233+ enable_sync = self .enable_sync ,
4234+ user_data_dir = self .user_data_dir ,
4235+ extension_zip = self .extension_zip ,
4236+ extension_dir = self .extension_dir )
4237+ self ._default_driver = self .driver
4238+ if self ._reuse_session :
4239+ sb_config .shared_driver = self .driver
42104240
42114241 def __set_last_page_screenshot (self ):
42124242 """ self.__last_page_screenshot is only for pytest html report logs
@@ -4280,6 +4310,16 @@ def __add_pytest_html_extra(self):
42804310 pass
42814311
42824312 def __quit_all_drivers (self ):
4313+ if self ._reuse_session and sb_config .shared_driver :
4314+ if len (self ._drivers_list ) > 0 :
4315+ sb_config .shared_driver = self ._drivers_list [0 ]
4316+ self ._default_driver = self ._drivers_list [0 ]
4317+ self .switch_to_default_driver ()
4318+ if len (self ._drivers_list ) > 1 :
4319+ self ._drivers_list = self ._drivers_list [1 :]
4320+ else :
4321+ self ._drivers_list = []
4322+
42834323 # Close all open browser windows
42844324 self ._drivers_list .reverse () # Last In, First Out
42854325 for driver in self ._drivers_list :
@@ -4290,6 +4330,7 @@ def __quit_all_drivers(self):
42904330 except Exception :
42914331 pass
42924332 self .driver = None
4333+ self ._default_driver = None
42934334 self ._drivers_list = []
42944335
42954336 def tearDown (self ):
0 commit comments