Fix AttributeError in _wait_for_page_ready_before_action (#4563)
This commit is contained in:
@@ -546,10 +546,11 @@ class ScriptSkyvernPage(SkyvernPage):
|
|||||||
3. DOM stability (no significant mutations for 300ms)
|
3. DOM stability (no significant mutations for 300ms)
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
if not self._page:
|
# Note: SkyvernPage uses self.page, not self._page
|
||||||
|
if not self.page:
|
||||||
return
|
return
|
||||||
|
|
||||||
skyvern_frame = await SkyvernFrame.create_instance(frame=self._page)
|
skyvern_frame = await SkyvernFrame.create_instance(frame=self.page)
|
||||||
await skyvern_frame.wait_for_page_ready(
|
await skyvern_frame.wait_for_page_ready(
|
||||||
network_idle_timeout_ms=settings.PAGE_READY_NETWORK_IDLE_TIMEOUT_MS,
|
network_idle_timeout_ms=settings.PAGE_READY_NETWORK_IDLE_TIMEOUT_MS,
|
||||||
loading_indicator_timeout_ms=settings.PAGE_READY_LOADING_INDICATOR_TIMEOUT_MS,
|
loading_indicator_timeout_ms=settings.PAGE_READY_LOADING_INDICATOR_TIMEOUT_MS,
|
||||||
|
|||||||
@@ -2456,8 +2456,23 @@ class ForgeAgent:
|
|||||||
break
|
break
|
||||||
except (FailedToTakeScreenshot, ScrapingFailed) as e:
|
except (FailedToTakeScreenshot, ScrapingFailed) as e:
|
||||||
if idx < len(SCRAPE_TYPE_ORDER) - 1:
|
if idx < len(SCRAPE_TYPE_ORDER) - 1:
|
||||||
|
LOG.warning(
|
||||||
|
"Scrape attempt failed, will retry with next strategy",
|
||||||
|
attempt=idx + 1,
|
||||||
|
scrape_type=scrape_type.value if hasattr(scrape_type, "value") else str(scrape_type),
|
||||||
|
error_type=e.__class__.__name__,
|
||||||
|
url=task.url,
|
||||||
|
)
|
||||||
continue
|
continue
|
||||||
LOG.exception(f"{e.__class__.__name__} happened in two normal attempts and reload-page retry")
|
LOG.error(
|
||||||
|
"All scrape attempts failed",
|
||||||
|
total_attempts=len(SCRAPE_TYPE_ORDER),
|
||||||
|
error_type=e.__class__.__name__,
|
||||||
|
url=task.url,
|
||||||
|
step_order=step.order,
|
||||||
|
step_retry=step.retry_index,
|
||||||
|
exc_info=True,
|
||||||
|
)
|
||||||
raise e
|
raise e
|
||||||
|
|
||||||
if scraped_page is None:
|
if scraped_page is None:
|
||||||
|
|||||||
@@ -74,6 +74,15 @@ async def _current_viewpoint_screenshot_helper(
|
|||||||
) -> bytes:
|
) -> bytes:
|
||||||
if page.is_closed():
|
if page.is_closed():
|
||||||
raise FailedToTakeScreenshot(error_message="Page is closed")
|
raise FailedToTakeScreenshot(error_message="Page is closed")
|
||||||
|
|
||||||
|
# Capture page context for debugging screenshot issues
|
||||||
|
url = page.url
|
||||||
|
try:
|
||||||
|
viewport = page.viewport_size
|
||||||
|
viewport_info = f"{viewport['width']}x{viewport['height']}" if viewport else "unknown"
|
||||||
|
except Exception:
|
||||||
|
viewport_info = "unknown"
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if mode == ScreenshotMode.DETAILED:
|
if mode == ScreenshotMode.DETAILED:
|
||||||
await page.wait_for_load_state(timeout=SettingsManager.get_settings().BROWSER_LOADING_TIMEOUT_MS)
|
await page.wait_for_load_state(timeout=SettingsManager.get_settings().BROWSER_LOADING_TIMEOUT_MS)
|
||||||
@@ -94,10 +103,25 @@ async def _current_viewpoint_screenshot_helper(
|
|||||||
)
|
)
|
||||||
return screenshot
|
return screenshot
|
||||||
except TimeoutError as e:
|
except TimeoutError as e:
|
||||||
LOG.exception(f"Timeout error while taking screenshot: {str(e)}")
|
LOG.error(
|
||||||
|
"Screenshot timeout",
|
||||||
|
timeout_ms=timeout,
|
||||||
|
url=url,
|
||||||
|
viewport=viewport_info,
|
||||||
|
full_page=full_page,
|
||||||
|
mode=mode.value if hasattr(mode, "value") else str(mode),
|
||||||
|
error=str(e),
|
||||||
|
)
|
||||||
raise FailedToTakeScreenshot(error_message=str(e)) from e
|
raise FailedToTakeScreenshot(error_message=str(e)) from e
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
LOG.exception(f"Unknown error while taking screenshot: {str(e)}")
|
LOG.error(
|
||||||
|
"Screenshot failed",
|
||||||
|
url=url,
|
||||||
|
viewport=viewport_info,
|
||||||
|
full_page=full_page,
|
||||||
|
error=str(e),
|
||||||
|
exc_info=True,
|
||||||
|
)
|
||||||
raise FailedToTakeScreenshot(error_message=str(e)) from e
|
raise FailedToTakeScreenshot(error_message=str(e)) from e
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user