optimize sequential click logic (#4495)
This commit is contained in:
@@ -782,6 +782,7 @@ async def handle_click_action(
|
|||||||
anchor_element=skyvern_element,
|
anchor_element=skyvern_element,
|
||||||
dom=dom,
|
dom=dom,
|
||||||
page=page,
|
page=page,
|
||||||
|
skyvern_frame=skyvern_frame,
|
||||||
scraped_page=scraped_page,
|
scraped_page=scraped_page,
|
||||||
incremental_scraped=incremental_scraped,
|
incremental_scraped=incremental_scraped,
|
||||||
task=task,
|
task=task,
|
||||||
@@ -812,6 +813,7 @@ async def handle_sequential_click_for_dropdown(
|
|||||||
anchor_element: SkyvernElement,
|
anchor_element: SkyvernElement,
|
||||||
dom: DomUtil,
|
dom: DomUtil,
|
||||||
page: Page,
|
page: Page,
|
||||||
|
skyvern_frame: SkyvernFrame,
|
||||||
scraped_page: ScrapedPage,
|
scraped_page: ScrapedPage,
|
||||||
incremental_scraped: IncrementalScrapePage,
|
incremental_scraped: IncrementalScrapePage,
|
||||||
task: Task,
|
task: Task,
|
||||||
@@ -820,6 +822,11 @@ async def handle_sequential_click_for_dropdown(
|
|||||||
if await incremental_scraped.get_incremental_elements_num() == 0:
|
if await incremental_scraped.get_incremental_elements_num() == 0:
|
||||||
return None
|
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(
|
incremental_elements = await incremental_scraped.get_incremental_element_tree(
|
||||||
clean_and_remove_element_tree_factory(
|
clean_and_remove_element_tree_factory(
|
||||||
task=task, step=step, check_filter_funcs=[check_existed_but_not_option_element_in_dom_factory(dom)]
|
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 (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 = ""
|
action_history_str = ""
|
||||||
if action_history and len(action_history) > 0:
|
if action_history and len(action_history) > 0:
|
||||||
result = action_history[-1]
|
result = action_history[-1]
|
||||||
|
|||||||
Reference in New Issue
Block a user