File tree Expand file tree Collapse file tree 3 files changed +45
-5
lines changed
Expand file tree Collapse file tree 3 files changed +45
-5
lines changed Original file line number Diff line number Diff line change @@ -546,10 +546,11 @@ async def _wait_for_page_ready_before_action(self) -> None:
546546 3. DOM stability (no significant mutations for 300ms)
547547 """
548548 try :
549- if not self ._page :
549+ # Note: SkyvernPage uses self.page, not self._page
550+ if not self .page :
550551 return
551552
552- skyvern_frame = await SkyvernFrame .create_instance (frame = self ._page )
553+ skyvern_frame = await SkyvernFrame .create_instance (frame = self .page )
553554 await skyvern_frame .wait_for_page_ready (
554555 network_idle_timeout_ms = settings .PAGE_READY_NETWORK_IDLE_TIMEOUT_MS ,
555556 loading_indicator_timeout_ms = settings .PAGE_READY_LOADING_INDICATOR_TIMEOUT_MS ,
Original file line number Diff line number Diff line change @@ -2456,8 +2456,23 @@ async def build_and_record_step_prompt(
24562456 break
24572457 except (FailedToTakeScreenshot , ScrapingFailed ) as e :
24582458 if idx < len (SCRAPE_TYPE_ORDER ) - 1 :
2459+ LOG .warning (
2460+ "Scrape attempt failed, will retry with next strategy" ,
2461+ attempt = idx + 1 ,
2462+ scrape_type = scrape_type .value if hasattr (scrape_type , "value" ) else str (scrape_type ),
2463+ error_type = e .__class__ .__name__ ,
2464+ url = task .url ,
2465+ )
24592466 continue
2460- LOG .exception (f"{ e .__class__ .__name__ } happened in two normal attempts and reload-page retry" )
2467+ LOG .error (
2468+ "All scrape attempts failed" ,
2469+ total_attempts = len (SCRAPE_TYPE_ORDER ),
2470+ error_type = e .__class__ .__name__ ,
2471+ url = task .url ,
2472+ step_order = step .order ,
2473+ step_retry = step .retry_index ,
2474+ exc_info = True ,
2475+ )
24612476 raise e
24622477
24632478 if scraped_page is None :
Original file line number Diff line number Diff line change @@ -74,6 +74,15 @@ async def _current_viewpoint_screenshot_helper(
7474) -> bytes :
7575 if page .is_closed ():
7676 raise FailedToTakeScreenshot (error_message = "Page is closed" )
77+
78+ # Capture page context for debugging screenshot issues
79+ url = page .url
80+ try :
81+ viewport = page .viewport_size
82+ viewport_info = f"{ viewport ['width' ]} x{ viewport ['height' ]} " if viewport else "unknown"
83+ except Exception :
84+ viewport_info = "unknown"
85+
7786 try :
7887 if mode == ScreenshotMode .DETAILED :
7988 await page .wait_for_load_state (timeout = SettingsManager .get_settings ().BROWSER_LOADING_TIMEOUT_MS )
@@ -94,10 +103,25 @@ async def _current_viewpoint_screenshot_helper(
94103 )
95104 return screenshot
96105 except TimeoutError as e :
97- LOG .exception (f"Timeout error while taking screenshot: { str (e )} " )
106+ LOG .error (
107+ "Screenshot timeout" ,
108+ timeout_ms = timeout ,
109+ url = url ,
110+ viewport = viewport_info ,
111+ full_page = full_page ,
112+ mode = mode .value if hasattr (mode , "value" ) else str (mode ),
113+ error = str (e ),
114+ )
98115 raise FailedToTakeScreenshot (error_message = str (e )) from e
99116 except Exception as e :
100- LOG .exception (f"Unknown error while taking screenshot: { str (e )} " )
117+ LOG .error (
118+ "Screenshot failed" ,
119+ url = url ,
120+ viewport = viewport_info ,
121+ full_page = full_page ,
122+ error = str (e ),
123+ exc_info = True ,
124+ )
101125 raise FailedToTakeScreenshot (error_message = str (e )) from e
102126
103127
You can’t perform that action at this time.
0 commit comments