@@ -4122,6 +4122,7 @@ def setUp(self, masterqa_mode=False):
4122
4122
self .extension_zip = sb_config .extension_zip
4123
4123
self .extension_dir = sb_config .extension_dir
4124
4124
self .maximize_option = sb_config .maximize_option
4125
+ self ._reuse_session = sb_config .reuse_session
4125
4126
self .save_screenshot_after_test = sb_config .save_screenshot
4126
4127
self .visual_baseline = sb_config .visual_baseline
4127
4128
self .timeout_multiplier = sb_config .timeout_multiplier
@@ -4192,21 +4193,50 @@ def setUp(self, masterqa_mode=False):
4192
4193
if self .settings_file :
4193
4194
settings_parser .set_settings (self .settings_file )
4194
4195
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
4210
4240
4211
4241
def __set_last_page_screenshot (self ):
4212
4242
""" self.__last_page_screenshot is only for pytest html report logs
@@ -4280,6 +4310,16 @@ def __add_pytest_html_extra(self):
4280
4310
pass
4281
4311
4282
4312
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
+
4283
4323
# Close all open browser windows
4284
4324
self ._drivers_list .reverse () # Last In, First Out
4285
4325
for driver in self ._drivers_list :
@@ -4290,6 +4330,7 @@ def __quit_all_drivers(self):
4290
4330
except Exception :
4291
4331
pass
4292
4332
self .driver = None
4333
+ self ._default_driver = None
4293
4334
self ._drivers_list = []
4294
4335
4295
4336
def tearDown (self ):
0 commit comments