Fix press Enter clearing text on Google search (#4718)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -117,6 +117,7 @@ from skyvern.webeye.actions.actions import (
|
|||||||
DownloadFileAction,
|
DownloadFileAction,
|
||||||
ExtractAction,
|
ExtractAction,
|
||||||
GotoUrlAction,
|
GotoUrlAction,
|
||||||
|
KeypressAction,
|
||||||
ReloadPageAction,
|
ReloadPageAction,
|
||||||
TerminateAction,
|
TerminateAction,
|
||||||
WebAction,
|
WebAction,
|
||||||
@@ -1285,6 +1286,16 @@ class ForgeAgent:
|
|||||||
"is_retry": step.retry_index > 0,
|
"is_retry": step.retry_index > 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Tell the handler to skip the auto-completion Tab hack when the
|
||||||
|
# next batched action would be broken by a focus change — e.g. a
|
||||||
|
# KEYPRESS Enter or another action on the same element.
|
||||||
|
if action.action_type == ActionType.INPUT_TEXT and action_idx + 1 < len(action_linked_list):
|
||||||
|
next_action = action_linked_list[action_idx + 1].action
|
||||||
|
if isinstance(next_action, KeypressAction) or (
|
||||||
|
isinstance(next_action, WebAction) and next_action.element_id == action.element_id
|
||||||
|
):
|
||||||
|
action.skip_auto_complete_tab = True
|
||||||
|
|
||||||
results = await ActionHandler.handle_action(
|
results = await ActionHandler.handle_action(
|
||||||
scraped_page=scraped_page,
|
scraped_page=scraped_page,
|
||||||
task=task,
|
task=task,
|
||||||
|
|||||||
@@ -152,6 +152,11 @@ class Action(BaseModel):
|
|||||||
# flag indicating whether the action requires mini-agent mode
|
# flag indicating whether the action requires mini-agent mode
|
||||||
has_mini_agent: bool | None = None
|
has_mini_agent: bool | None = None
|
||||||
|
|
||||||
|
# When True, the auto-completion Tab hack is skipped because a follow-up
|
||||||
|
# action in the same batch targets the same element or presses a key (e.g. Enter).
|
||||||
|
# Pressing Tab would move focus away and break that next action.
|
||||||
|
skip_auto_complete_tab: bool = False
|
||||||
|
|
||||||
created_at: datetime | None = None
|
created_at: datetime | None = None
|
||||||
modified_at: datetime | None = None
|
modified_at: datetime | None = None
|
||||||
created_by: str | None = None
|
created_by: str | None = None
|
||||||
|
|||||||
@@ -1512,7 +1512,12 @@ async def handle_input_text_action(
|
|||||||
raise e
|
raise e
|
||||||
finally:
|
finally:
|
||||||
# HACK: force to finish missing auto completion input
|
# HACK: force to finish missing auto completion input
|
||||||
if auto_complete_hacky_flag and await skyvern_element.is_visible() and not await skyvern_element.is_raw_input():
|
if (
|
||||||
|
auto_complete_hacky_flag
|
||||||
|
and await skyvern_element.is_visible()
|
||||||
|
and not await skyvern_element.is_raw_input()
|
||||||
|
and not action.skip_auto_complete_tab
|
||||||
|
):
|
||||||
LOG.debug(
|
LOG.debug(
|
||||||
"Trigger input-selection hack, pressing Tab to choose one",
|
"Trigger input-selection hack, pressing Tab to choose one",
|
||||||
action=action,
|
action=action,
|
||||||
|
|||||||
Reference in New Issue
Block a user