View a markdown version of this page

Ação do sistema operacional do navegador - Amazon Bedrock AgentCore

Ação do sistema operacional do navegador

A InvokeBrowser API fornece controle direto no nível do sistema operacional sobre as sessões do Amazon Bedrock AgentCore Browser. Embora o endpoint de WebSocket-based automação use o DevTools Protocolo Chrome (CDP) para interação com o navegador, InvokeBrowser opera no nível do sistema operacional, permitindo ações que o CDP não pode realizar, como interagir com diálogos de impressão, atalhos de teclado, menus de contexto com o botão direito do mouse, alertas e captura de tela em tela cheia. JavaScript

Visão geral do

O Amazon Bedrock AgentCore Browser fornece duas maneiras de interagir com uma sessão do navegador:

  • WebSocket-based automação (CDP): usa o DevTools protocolo Chrome em uma WebSocket conexão. Isso é ideal para tarefas padrão de automação do navegador, como navegar em páginas, clicar em elementos DOM, preencher formulários e extrair o conteúdo da página. Bibliotecas como Playwright e browser-use se conectam por meio desse endpoint.

  • OS-level actions (InvokeBrowser): usa uma API REST para realizar interações no nível do sistema operacional por meio de ações de mouse, teclado e captura de tela. Isso complementa o CDP ao lidar com cenários em que a automação no nível do navegador é insuficiente.

Use InvokeBrowser quando seu agente precisar:

  • Interaja com diálogos nativos do sistema operacional, como diálogos de impressão, diálogos de arquivos ou solicitações de autenticação que upload/download estão fora do DOM do navegador

  • Ignore JavaScript alertas, confirmações ou solicitações que bloqueiam a execução do CDP

  • Use atalhos de teclado (por exemplo, ctrl+a, ctrl+p) que acionam o comportamento OS-level

  • Interaja com os menus de contexto do botão direito renderizados pelo sistema operacional

  • Capture capturas de tela completas do desktop que incluam conteúdo fora da janela de visualização do navegador, como notificações do sistema operacional ou layouts de várias janelas

  • Execute operações de arrastar e soltar que se estendem pelas janelas do navegador ou entre o navegador e a área de trabalho

InvokeBrowser segue o mesmo padrão de InvokeCodeInterpreter: uma única operação unificada com despacho do tipo ação. Você envia uma solicitação com exatamente uma ação e recebe o resultado correspondente.

Ações compatíveis

InvokeBrowser suporta os seguintes tipos de ação por meio do BrowserAction sindicato. Exatamente um membro da ação deve ser definido por solicitação.

Ações do mouse

Para todas as ações do mouse, os valores das coordenadas (x,y) devem estar estritamente dentro dos limites da janela de visualização da sessão do navegador. Os intervalos válidos são 1 < x < viewport Width-2 e 1 < y < Height-2 viewport. O tamanho padrão da janela de visualização é 1456 × 819 pixels, que pode ser configurado ao iniciar uma sessão usando o parâmetro. viewPort

Ação Campos obrigatórios Campos opcionais Description

mouseClick

x(Inteiro), y (Inteiro)

button(MouseButton), clickCount (Inteiro)

Clique nas coordenadas especificadas. clickCount : 1—10. button : ESQUERDA, DIREITA, MEIO.

mouseMove

x(Inteiro), y (Inteiro)

Mova o cursor para as coordenadas especificadas.

mouseDrag

startX(Inteiro), startY (Inteiro), endX (Inteiro), (Inteiro) endY

button (MouseButton)

Arraste da posição inicial para a final. buttono padrão é LEFT.

mouseScroll

x(Inteiro), y (Inteiro)

deltaX(Inteiro), deltaY (Inteiro)

Role na posição especificada. deltaX/deltaY: -1000 a 1000. O negativo deltaY rola para baixo.

Ações do teclado

Ação Campos obrigatórios Campos opcionais Description

keyType

text (String)

Digite uma sequência de texto. Tamanho máximo: 10.000 caracteres.

keyPress

key (String)

presses(Inteiro)

Pressione uma tecla N vezes. presses : 1—100. Padronizado como 1.

keyShortcut

keys (KeyList)

Pressione uma combinação de teclas (por exemplo,["ctrl", "s"]). Máximo de 5 teclas.

Ação de captura de tela

Ação Campos obrigatórios Campos opcionais Description

screenshot

format (ScreenshotFormat)

Capture a área de trabalho completa do sistema operacional (não apenas a janela de visualização do navegador). Formato: somente PNG.

Considerações

  • ASCII-only entrada de texto: a keyType ação suporta somente caracteres ASCII. Non-ASCII caracteres (como Unicode ou caracteres de vários bytes) são ignorados durante a entrada.

  • Sem validação de nome de chave: as keyShortcut ações keyPress e não validam se os nomes de chave especificados são suportados. Se você fornecer um nome de chave não reconhecido, a API retornará um status de SUCESSO sem realizar a ação pretendida. Consulte os nomes de chave compatíveis listados acima.

  • Nomes de chave compatíveis: os nomes das chaves keyPress e keyShortcut ações devem estar em letras minúsculas. As chaves suportadas incluem caracteres únicos (az, 09) e chaves nomeadasenter, como,tab,space,backspace,delete,escape,ctrl,alt,shift.

Formato de solicitação e resposta

Solicitação

POST /browsers/{browserIdentifier}/sessions/invoke HTTP/1.1 x-amzn-browser-session-id: sessionId Content-type: application/json

O corpo da solicitação contém um action campo com exatamente um membro do conjunto de BrowserAction uniões:

{ "action": { "mouseClick": { "x": 100, "y": 200, "button": "LEFT", "clickCount": 1 } } }

Resposta

O sessionId é retornado por meio do cabeçalho de x-amzn-browser-session-id resposta. O corpo da resposta contém um result campo com o resultado da ação correspondente.

Sobre o sucesso:

{ "result": { "mouseClick": { "status": "SUCCESS", "error": null } } }

Em caso de falha, o status campo é definido como FALHA e contém uma descrição da falha. error

Exemplos

Os exemplos a seguir mostram como invocar ações do navegador usando a AWS CLI AWS , o SDK for Python (Boto3) e a API.

exemplo
AWS CLI
  1. Para clicar em uma posição específica:

    aws bedrock-agentcore invoke-browser \ --region <Region> \ --browser-identifier "aws.browser.v1" \ --session-id "<your-session-id>" \ --action '{"mouseClick": {"x": 100, "y": 200, "button": "LEFT", "clickCount": 1}}'

    Para digitar texto:

    aws bedrock-agentcore invoke-browser \ --region <Region> \ --browser-identifier "aws.browser.v1" \ --session-id "<your-session-id>" \ --action '{"keyType": {"text": "Hello, world!"}}'

    Para pressionar um atalho de teclado:

    aws bedrock-agentcore invoke-browser \ --region <Region> \ --browser-identifier "aws.browser.v1" \ --session-id "<your-session-id>" \ --action '{"keyShortcut": {"keys": ["ctrl", "s"]}}'

    Para fazer uma captura de tela:

    aws bedrock-agentcore invoke-browser \ --region <Region> \ --browser-identifier "aws.browser.v1" \ --session-id "<your-session-id>" \ --action '{"screenshot": {"format": "PNG"}}'
Boto3
  1. Para clicar em uma posição específica:

    response = dp_client.invoke_browser( browserIdentifier="aws.browser.v1", sessionId="<your-session-id>", action={ "mouseClick": { "x": 100, "y": 200, "button": "LEFT", "clickCount": 1 } } ) print(f"Status: {response['result']['mouseClick']['status']}")

    Para digitar texto:

    response = dp_client.invoke_browser( browserIdentifier="aws.browser.v1", sessionId="<your-session-id>", action={ "keyType": { "text": "Hello, world!" } } )

    Para fazer uma captura de tela e salvá-la:

    import base64 response = dp_client.invoke_browser( browserIdentifier="aws.browser.v1", sessionId="<your-session-id>", action={ "screenshot": { "format": "PNG" } } ) if response['result']['screenshot']['status'] == 'SUCCESS': image_data = base64.b64decode(response['result']['screenshot']['data']) with open("screenshot.png", "wb") as f: f.write(image_data) print("Screenshot saved as screenshot.png")
API
  1. Para clicar em uma posição específica:

    awscurl -X POST \ "https://bedrock-agentcore.<Region>.amazonaws.com/browsers/aws.browser.v1/sessions/invoke" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -H "x-amzn-browser-session-id: <your-session-id>" \ --service bedrock-agentcore \ --region <Region> \ -d '{ "action": { "mouseClick": { "x": 100, "y": 200, "button": "LEFT", "clickCount": 1 } } }'

    Para fazer uma captura de tela:

    awscurl -X POST \ "https://bedrock-agentcore.<Region>.amazonaws.com/browsers/aws.browser.v1/sessions/invoke" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -H "x-amzn-browser-session-id: <your-session-id>" \ --service bedrock-agentcore \ --region <Region> \ -d '{ "action": { "screenshot": { "format": "PNG" } } }'