@@ -39,22 +39,30 @@ def deconstruct_browser():
3939 for _ in __registered__instances__ :
4040 if not _ .stopped :
4141 _ .stop (deconstruct = True )
42- for attempt in range (5 ):
42+ max_attempts = 5
43+ for attempt in range (max_attempts ):
4344 try :
4445 if _ .config and not _ .config .uses_custom_data_dir :
45- shutil .rmtree (_ .config .user_data_dir , ignore_errors = False )
46+ if os .path .exists (_ .config .user_data_dir ):
47+ shutil .rmtree (
48+ _ .config .user_data_dir , ignore_errors = False
49+ )
50+ if not os .path .exists (_ .config .user_data_dir ):
51+ break
52+ else :
53+ time .sleep (0.12 )
4654 except FileNotFoundError :
4755 break
4856 except (PermissionError , OSError ) as e :
49- if attempt == 4 :
57+ if attempt == max_attempts - 1 :
5058 logger .debug (
5159 "Problem removing data dir %s\n "
5260 "Consider checking whether it's there "
5361 "and remove it by hand\n error: %s"
5462 % (_ .config .user_data_dir , e )
5563 )
5664 break
57- time .sleep (0.15 )
65+ time .sleep (0.12 )
5866 continue
5967 logging .debug ("Temp profile %s was removed." % _ .config .user_data_dir )
6068
@@ -207,7 +215,8 @@ async def _handle_target_update(
207215 target_info = event .target_info
208216 current_tab = next (
209217 filter (
210- lambda item : item .target_id == target_info .target_id , self .targets # noqa
218+ lambda item : item .target_id == target_info .target_id ,
219+ self .targets ,
211220 )
212221 )
213222 current_target = current_tab .target
@@ -583,11 +592,11 @@ async def start(self=None) -> Browser:
583592 else "c:/path/to/your/browser.exe"
584593 )
585594 )
586- if getattr (self .config , "_extensions" , None ): # noqa
595+ if getattr (self .config , "_extensions" , None ):
587596 self .config .add_argument (
588597 "--load-extension=%s"
589598 % "," .join (str (_ ) for _ in self .config ._extensions )
590- ) # noqa
599+ )
591600 exe = self .config .browser_executable_path
592601 params = self .config ()
593602 logger .debug (
@@ -613,16 +622,17 @@ async def start(self=None) -> Browser:
613622 await asyncio .sleep (0.05 )
614623 get_registered_instances ().add (self )
615624 await asyncio .sleep (0.15 )
616- for attempt in range (5 ):
625+ max_attempts = 20
626+ for attempt in range (max_attempts ):
617627 try :
618628 self .info = ContraDict (
619629 await self ._http .get ("version" ), silent = True
620630 )
621631 except (Exception ,):
622- if attempt == 4 :
632+ if attempt == max_attempts - 1 :
623633 logger .debug ("Could not start" , exc_info = True )
624634 else :
625- await self .sleep (0.5 )
635+ await self .sleep (0.2 )
626636 else :
627637 break
628638 if not self .info :
@@ -644,9 +654,11 @@ async def start(self=None) -> Browser:
644654 %s
645655 """ % (dashes , message , dashes )
646656 )
657+ await asyncio .sleep (0.03 )
647658 self .connection = Connection (
648659 self .info .webSocketDebuggerUrl , browser = self
649660 )
661+ await asyncio .sleep (0.03 )
650662 if self .config .autodiscover_targets :
651663 logger .debug ("Enabling autodiscover targets" )
652664 self .connection .handlers [cdp .target .TargetInfoChanged ] = [
0 commit comments