optimize sequential click logic (#4495)
This commit is contained in:
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user