Fix press Enter clearing text on Google search (#4718)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
pedrohsdb
2026-02-12 12:33:33 -08:00
committed by GitHub
parent d876862730
commit 9f5ce2878f
3 changed files with 22 additions and 1 deletions

View File

@@ -117,6 +117,7 @@ from skyvern.webeye.actions.actions import (
DownloadFileAction,
ExtractAction,
GotoUrlAction,
KeypressAction,
ReloadPageAction,
TerminateAction,
WebAction,
@@ -1285,6 +1286,16 @@ class ForgeAgent:
"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(
scraped_page=scraped_page,
task=task,

View File

@@ -152,6 +152,11 @@ class Action(BaseModel):
# flag indicating whether the action requires mini-agent mode
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
modified_at: datetime | None = None
created_by: str | None = None

View File

@@ -1512,7 +1512,12 @@ async def handle_input_text_action(
raise e
finally:
# 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(
"Trigger input-selection hack, pressing Tab to choose one",
action=action,