From 1255a24df15be1367abda4fbbfff7748ab220b7d Mon Sep 17 00:00:00 2001 From: LawyZheng Date: Tue, 20 Jan 2026 16:02:39 +0800 Subject: [PATCH] optimize sequential click logic (#4495) --- skyvern/webeye/actions/handler.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/skyvern/webeye/actions/handler.py b/skyvern/webeye/actions/handler.py index 60edb7fd..c0e49a2a 100644 --- a/skyvern/webeye/actions/handler.py +++ b/skyvern/webeye/actions/handler.py @@ -782,6 +782,7 @@ async def handle_click_action( anchor_element=skyvern_element, dom=dom, page=page, + skyvern_frame=skyvern_frame, scraped_page=scraped_page, incremental_scraped=incremental_scraped, task=task, @@ -812,6 +813,7 @@ async def handle_sequential_click_for_dropdown( anchor_element: SkyvernElement, dom: DomUtil, page: Page, + skyvern_frame: SkyvernFrame, scraped_page: ScrapedPage, incremental_scraped: IncrementalScrapePage, task: Task, @@ -820,6 +822,11 @@ async def handle_sequential_click_for_dropdown( if await incremental_scraped.get_incremental_elements_num() == 0: return None + await skyvern_frame.safe_wait_for_animation_end() + if page.url != scraped_page.url: + LOG.info("Page URL changed after clicking, exiting the sequential click logic") + return None + incremental_elements = await incremental_scraped.get_incremental_element_tree( clean_and_remove_element_tree_factory( task=task, step=step, check_filter_funcs=[check_existed_but_not_option_element_in_dom_factory(dom)] @@ -840,6 +847,10 @@ async def handle_sequential_click_for_dropdown( if (await dom_after_open.get_skyvern_element_by_id(element_id)).is_interactable() ] + if len(new_interactable_element_ids) == 0: + LOG.info("No new interactable elements found, exiting the sequential click logic") + return None + action_history_str = "" if action_history and len(action_history) > 0: result = action_history[-1]