From af68ea0ec4e5f6e5e4809999afd59d62b02826ed Mon Sep 17 00:00:00 2001 From: LawyZheng Date: Fri, 23 Jan 2026 17:44:13 +0800 Subject: [PATCH] skip iframe tree when exception (#4530) --- skyvern/webeye/scraper/scraper.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/skyvern/webeye/scraper/scraper.py b/skyvern/webeye/scraper/scraper.py index 0f8ab054..9d76d998 100644 --- a/skyvern/webeye/scraper/scraper.py +++ b/skyvern/webeye/scraper/scraper.py @@ -232,6 +232,8 @@ async def get_frame_text(iframe: Frame) -> str: try: text = await SkyvernFrame.evaluate(frame=iframe, expression=js_script) + if text is None: + text = "" except Exception: LOG.warning( "failed to get text from iframe", @@ -445,18 +447,21 @@ async def add_frame_interactable_elements( ) return elements, element_tree - skyvern_frame = await SkyvernFrame.create_instance(frame) - await skyvern_frame.safe_wait_for_animation_end() + try: + skyvern_frame = await SkyvernFrame.create_instance(frame) + await skyvern_frame.safe_wait_for_animation_end() - frame_elements, frame_element_tree = await skyvern_frame.build_tree_from_body( - frame_name=skyvern_id, frame_index=frame_index, must_included_tags=must_included_tags - ) + frame_elements, frame_element_tree = await skyvern_frame.build_tree_from_body( + frame_name=skyvern_id, frame_index=frame_index, must_included_tags=must_included_tags + ) - for element in elements: - if element["id"] == skyvern_id: - element["children"] = frame_element_tree + for element in elements: + if element["id"] == skyvern_id: + element["children"] = frame_element_tree - elements = elements + frame_elements + elements = elements + frame_elements + except Exception: + LOG.warning("Failed to build the tree of the frame, skipping frame", frame_id=skyvern_id, exc_info=True) return elements, element_tree