@@ -29,7 +29,10 @@ async def _verify_ui_state_settings(page: AsyncPage, req_id: str='unknown') -> d
2929 logger .error (f'[{ req_id } ] ❌ 解析localStorage JSON失败: { e } ' )
3030 return {'exists' : False , 'isAdvancedOpen' : None , 'areToolsOpen' : None , 'needsUpdate' : True , 'error' : f'JSON解析失败: { e } ' }
3131 except Exception as e :
32- logger .error (f'[{ req_id } ] ❌ 验证UI状态设置时发生错误: { e } ' )
32+ if 'Target page, context or browser has been closed' in str (e ):
33+ logger .debug (f'[{ req_id } ] UI状态验证时浏览器已关闭' )
34+ else :
35+ logger .error (f'[{ req_id } ] ❌ 验证UI状态设置时发生错误: { e } ' )
3336 return {'exists' : False , 'isAdvancedOpen' : None , 'areToolsOpen' : None , 'needsUpdate' : True , 'error' : f'验证失败: { e } ' }
3437
3538async def _force_ui_state_settings (page : AsyncPage , req_id : str = 'unknown' ) -> bool :
@@ -84,7 +87,10 @@ async def _force_ui_state_settings(page: AsyncPage, req_id: str='unknown') -> bo
8487 return False
8588
8689 except Exception as e :
87- logger .error (f'[{ req_id } ] ❌ 强制设置UI状态错误: { e } ' )
90+ if 'Target page, context or browser has been closed' in str (e ):
91+ logger .debug (f'[{ req_id } ] 强制设置UI时浏览器已关闭' )
92+ else :
93+ logger .error (f'[{ req_id } ] ❌ 强制设置UI状态错误: { e } ' )
8894 return False
8995
9096async def _force_ui_state_with_retry (page : AsyncPage , req_id : str = 'unknown' , max_retries : int = 3 , retry_delay : float = 1.0 ) -> bool :
@@ -385,7 +391,7 @@ async def _handle_initial_model_state_and_storage(page: AsyncPage):
385391 except Exception as reload_err :
386392 err_str = str (reload_err )
387393 if 'Target page, context or browser has been closed' in err_str or 'Browser has been closed' in err_str :
388- logger .warning (f' ⚠️ 浏览器已关闭,跳过重新加载。' )
394+ logger .debug (f' ⚠️ 浏览器已关闭,跳过重新加载。' )
389395 return
390396 logger .warning (f' ⚠️ 页面重新加载尝试 { attempt + 1 } /{ max_retries } 失败: { reload_err } ' )
391397 if attempt < max_retries - 1 :
@@ -401,6 +407,10 @@ async def _handle_initial_model_state_and_storage(page: AsyncPage):
401407 else :
402408 logger .info (' localStorage 状态良好 (isAdvancedOpen=true, promptModel有效),无需刷新页面。' )
403409 except Exception as e :
410+ from playwright ._impl ._errors import TargetClosedError
411+ if isinstance (e , TargetClosedError ):
412+ logger .debug (f'处理初始模型状态时浏览器已关闭: { e } ' )
413+ return
404414 logger .error (f'❌ (新) 处理初始模型状态和 localStorage 时发生严重错误: { e } ' , exc_info = True )
405415 try :
406416 logger .warning (' 由于发生错误,尝试回退仅从页面显示设置全局模型 ID (不写入localStorage)...' )
@@ -421,7 +431,7 @@ async def _set_model_from_page_display(page: AsyncPage, set_storage: bool=False)
421431 )
422432
423433 if not displayed_model_name :
424- logger .warning (' 所有选择器都无法获取页面显示的模型名称' )
434+ logger .debug (' 所有选择器都无法获取页面显示的模型名称' )
425435 displayed_model_name = '未知模型'
426436 found_model_id_from_display = None
427437 if model_list_fetch_event and (not model_list_fetch_event .is_set ()):
@@ -437,7 +447,7 @@ async def _set_model_from_page_display(page: AsyncPage, set_storage: bool=False)
437447 logger .info (f" 显示名称 '{ displayed_model_name } ' 对应模型 ID: { found_model_id_from_display } " )
438448 break
439449 if not found_model_id_from_display :
440- logger .warning (f" 未在已知模型列表中找到与显示名称 '{ displayed_model_name } ' 匹配的 ID。" )
450+ logger .debug (f" 未在已知模型列表中找到与显示名称 '{ displayed_model_name } ' 匹配的 ID。" )
441451 else :
442452 logger .warning (' 模型列表尚不可用,无法将显示名称转换为ID。' )
443453 new_model_value = found_model_id_from_display if found_model_id_from_display else displayed_model_name
@@ -478,4 +488,8 @@ async def _set_model_from_page_display(page: AsyncPage, set_storage: bool=False)
478488 await page .evaluate ("(prefsStr) => localStorage.setItem('aiStudioUserPreference', prefsStr)" , json .dumps (prefs_to_set ))
479489 logger .info (f" ✅ localStorage.aiStudioUserPreference 已更新。isAdvancedOpen: { prefs_to_set .get ('isAdvancedOpen' )} , areToolsOpen: { prefs_to_set .get ('areToolsOpen' )} (期望: True), promptModel: '{ prefs_to_set .get ('promptModel' , '未设置/保留原样' )} '。" )
480490 except Exception as e_set_disp :
481- logger .error (f' 尝试从页面显示设置模型时出错: { e_set_disp } ' , exc_info = True )
491+ from playwright ._impl ._errors import TargetClosedError
492+ if isinstance (e_set_disp , TargetClosedError ):
493+ logger .debug (f' 尝试从页面显示设置模型时出错 (browser closed): { e_set_disp } ' )
494+ else :
495+ logger .error (f' 尝试从页面显示设置模型时出错: { e_set_disp } ' , exc_info = True )
0 commit comments