[comment]: # (tags: browser)

[comment]: # ({b2b7cc8c-5b27f125})
# 2 Objetos JavaScript de item de navegador

[comment]: # ({/b2b7cc8c-5b27f125})

[comment]: # ({78a26b1c-8dceeea0})
#### Visão geral

Esta seção descreve as adições do Zabbix à linguagem JavaScript implementadas com Duktape para uso no script do [item Browser](/manual/config/items/itemtypes/browser).
Essas adições complementam os objetos JavaScript descritos na página [Objetos JavaScript adicionais](/manual/config/items/preprocessing/javascript/javascript_objects).

[comment]: # ({/78a26b1c-8dceeea0})

[comment]: # ({4c174987-63b1c0c6})
#### Browser

O objeto `Browser` gerencia sessões do WebDriver, inicializando uma sessão ao ser criado e encerrando-a ao ser destruído.
Um único script pode suportar até quatro objetos `Browser`.

Para construir um objeto `Browser`, use a sintaxe `new Browser(options)`.
O parâmetro `options` (*objeto JSON*) especifica as opções do navegador, geralmente o resultado do método de opções do WebDriver (por exemplo, `Browser.chromeOptions()`).

Os seguintes métodos são suportados com o objeto `Browser`.

|Método|Descrição|
|---|-------|
|`navigate(url)`|Navega para a URL especificada.<br><br>Parâmetros:<br>`url` - (string) URL para navegar.|
|`getUrl()`|Retorna uma string da URL da página aberta.|
|`getPageSource()`|Retorna uma string do código-fonte da página aberta.|
|`findElement(strategy, selector)`|Retorna um objeto [`Element`](#element) com um elemento na página aberta (ou retorna `null` se nenhum elemento corresponder a `strategy` e `selector`).<br><br>Parâmetros:<br>`strategy` - (string, css selector/link text/partial link text/tag name/xpath) [Estratégia de localização](https://www.selenium.dev/documentation/webdriver/elements/locators/);<br>`selector` - (string) Seletor do elemento usando a estratégia de localização especificada.|
|`findElements(strategy, target)`|Retorna um array de objetos [`Element`](#element) com vários elementos na página aberta (ou retorna um array vazio se nenhum elemento corresponder à estratégia de localização e ao alvo).<br><br>Parâmetros:<br>`strategy` - (string, css selector/link text/partial link text/tag name/xpath) [Estratégia de localização](https://www.selenium.dev/documentation/webdriver/elements/locators/);<br>`target` - (string) Seletor do elemento usando a estratégia de localização especificada.|
|`getCookies()`|Retorna um array de objetos [`Cookie`](#cookie).|
|`addCookie(cookie)`|Define cookies.<br><br>Parâmetros:<br>`cookie` - (objeto [`Cookie`](#cookie)) Cookie a ser definido.|
|`getScreenshot()`|Retorna uma string codificada em base64 representando uma imagem da viewport do navegador.|
|`setScreenSize(x,y)`|Define o tamanho da viewport do navegador.<br><br>Parâmetros:<br>`x` - (string) Largura em pixels;<br>`y` - (string) Altura em pixels.|
|`setScriptTimeout(timeout)`|Define o tempo limite de carregamento do script.<br><br>Parâmetros:<br>`timeout` - (integer) Valor do tempo limite em milissegundos.|
|`setSessionTimeout(timeout)`|Define o tempo limite da sessão (carregamento da página).<br><br>Parâmetros:<br>`timeout` - (integer) Valor do tempo limite em milissegundos.|
|`setElementWaitTimeout(timeout)`|Define o tempo limite da estratégia de localização do elemento (implícito).<br><br>Parâmetros:<br>`timeout` - (integer) Valor do tempo limite em milissegundos.|
|`collectPerfEntries(mark)`|Coleta entradas de desempenho para recuperar com o método `getResult()`.<br><br>Parâmetros:<br>`mark` - (string, opcional) marca do snapshot de desempenho.|
|`getRawPerfEntries()`|Retorna um array de objetos de entrada de desempenho.|
|`getResult()`|Retorna um objeto [`Result`](#result) com estatísticas da sessão do navegador (informações de erro, snapshots de desempenho, etc.).|
|`getError()`|Retorna um objeto `BrowserError` com erros do navegador (ou retorna `null` se não houver erros do navegador).|
|`setError(message)`|Define uma mensagem de erro personalizada a ser incluída no objeto [`Result`](#result).<br><br>Parâmetros:<br>`message` - (string) Mensagem de erro.|
|`discardError()`|Descarta o erro a ser retornado no objeto [`Result`](#result).|
|`getAlert()`|Retorna um objeto [`Alert`](#alert) com alertas do navegador (ou retorna `null` se não houver alertas do navegador).|
|`chromeOptions()`|Retorna um objeto `chromeOptions` com opções predefinidas do navegador Chrome.|
|`firefoxOptions()`|Retorna um objeto `firefoxOptions` com opções predefinidas do navegador Firefox.|
|`safariOptions()`|Retorna um objeto `safariOptions` com opções predefinidas do navegador Safari.|
|`edgeOptions()`|Retorna um objeto `edgeOptions` com opções predefinidas do navegador Edge.|
|`switchFrame(target)`| Alterna para o frame especificado. <br><br>Parâmetros:<br>`target` - (elemento do navegador ou inteiro, opcional) Frame de destino. Para selecionar um frame por elemento, passe o elemento. Para selecionar um frame por índice, passe o número. Se deixado em branco, alterna para o contexto de navegação de nível superior. |

Todos os métodos do Browser podem lançar os seguintes erros:

-   `BrowserError` - derivado do objeto `Error` que é lançado se o construtor do `Browser` falhar; contém uma propriedade adicional `browser` com um objeto `Browser` que lançou este `BrowserError`.
-   `WebdriverError` - derivado de `BrowserError`; contém as mesmas propriedades do objeto `BrowserError`, que indicam se o erro foi gerado em resposta a um erro na resposta do WebDriver.

[comment]: # ({/4c174987-63b1c0c6})

[comment]: # ({604d89e0-d4cb4fbc})
#### Elemento

O objeto `Element` é retornado pelos métodos `findElement()`/`findElements()` do objeto [`Browser`](#browser) e não pode ser construído diretamente.

O objeto `Element` representa um elemento na página da web e fornece métodos para interagir com ele.

Os seguintes métodos são suportados com o objeto `Element`.

|Método|Descrição|
|--|--------|
|`getAttribute(name)`|Retorna uma string com o valor do atributo do elemento (ou retorna `null` se o atributo especificado não for encontrado).<br><br>Parâmetros:<br>`name` - (string) Nome do atributo.|
|`getProperty(name)`|Retorna uma string com o valor da propriedade do elemento (ou retorna `null` se a propriedade especificada não for encontrada).<br><br>Parâmetros:<br>`name` - (string) Nome da propriedade.|
|`getText()`|Retorna uma string com o valor do texto do elemento.|
|`click()`|Clica em um elemento.|
|`clear()`|Limpa o conteúdo de um elemento editável.|
|`sendKeys(keys)`|Envia teclas.<br><br>Parâmetros:<br>`keys` - (string) Teclas a serem enviadas.|

[comment]: # ({/604d89e0-d4cb4fbc})

[comment]: # ({d06955ba-8f51d1aa})
#### Cookie

O objeto `Cookie` é retornado pelo método `getCookies()` do objeto [`Browser`](#browser) e passado para o método `addCookie()`.

Embora o objeto `Cookie` não tenha métodos, ele pode conter as seguintes propriedades:

|Propriedade|Tipo|Descrição|
|--|--|------|
|name|string|Nome do cookie.|
|value|string|Valor do cookie.|
|path|string|Caminho para o qual o cookie é válido.<br>O padrão é `"/"` se omitido ao adicionar um cookie.|
|domain|string|Domínio para o qual o cookie é visível.<br>O padrão é o domínio da URL do documento ativo do contexto de navegação atual da sessão se omitido ao adicionar um cookie.|
|secure|boolean|Indica se o cookie é seguro.<br>O padrão é `false` se omitido ao adicionar um cookie.|
|httpOnly|boolean|Indica se o cookie é HTTP-only.<br>O padrão é `false` se omitido ao adicionar um cookie.|
|expiry|integer|Tempo de expiração do cookie (em segundos desde a Época Unix). Não deve ser definido se omitido ao adicionar um cookie.|
|sameSite|string|O atributo `sameSite` do cookie, que controla se o cookie deve ser restrito a um contexto de primeira parte ou mesmo site.<br>Pode ser definido como `"Lax"` ou `"Strict"`.<br>O padrão é `"None"` se omitido ao adicionar um cookie.|

[comment]: # ({/d06955ba-8f51d1aa})

[comment]: # ({a5a93a3d-a8d4ccbd})
#### Alert

O objeto `Alert` representa um alerta de página web, é retornado pelo método `getAlert()` do objeto [`Browser`](#browser) e não pode ser construído diretamente.

O objeto `Alert` contém a propriedade `text` com o texto do alerta (ou `null` se não houver alertas).

Os seguintes métodos são suportados com o objeto `Alert`.

|Método|Descrição|
|--|--------|
|`accept()`|Aceita o alerta.|
|`dismiss()`|Descarta o alerta.|

[comment]: # ({/a5a93a3d-a8d4ccbd})

[comment]: # ({aaeb76e3-54b41590})
#### Result

O objeto `Result` contém estatísticas de sessão e é retornado pelo método `getResult()` do objeto [`Browser`](#browser).

Normalmente, o objeto `Result` é convertido em string e retornado pelo script, e então analisado em valores de item dependente por meio de pré-processamento.

Embora o objeto `Result` não tenha nenhum método, ele pode conter as seguintes propriedades.

|Propriedade|<|<|Tipo|Descrição|
|-|-|-|-----|---------------------|
|duration|<|<|string|Duração da sessão desde a criação até a obtenção do resultado.|
|error|<|<|object|Informações de erro.|
|<|http_status|<|integer|Status HTTP retornado pelo WebDriver (ou 0 se não houver erros do WebDriver).|
|^|error_code|<|string|Erro retornado pelo WebDriver (ou string vazia se não houver erros do WebDriver).|
|^|message|<|string|Mensagem de erro do WebDriver (ou string vazia se não houver erros do WebDriver).|
|performance_data|<|<|object|Estatísticas de desempenho.|
|<|summary|<|object|Resumo de desempenho.|
|^|<|navigation|object|Resumo de navegação.|
|^|^|resource|object|Resumo de recursos.|
|<|details|<|array de objetos|Estatísticas de desempenho após cada operação que poderia ter resultado em navegação.|
|^|<|mark|string|*(opcional)* Marca de snapshot de desempenho especificada com o método [`collectPerfEntries()`](#browser).|
|^|^|navigation|object|Estatísticas de navegação.|
|^|^|resource|object|Resumo de recursos para esta etapa.|
|^|^|user|array de objetos|Array de estatísticas do tipo mark/measure.|
|<|marks|<|array de objetos|Índices de snapshot de desempenho marcados.|
|^|<|name|string|Nome da marca de snapshot de desempenho.|
|^|^|index|integer|Índice de snapshot de desempenho no array details.|

[comment]: # ({/aaeb76e3-54b41590})
