optimize sequential click logic (#4495)

This commit is contained in:
LawyZheng
2026-01-20 16:02:39 +08:00
committed by GitHub
parent c2785fdeee
commit 1255a24df1

View File

@@ -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]