Referência à API

É possível visualizar informações de referência para as APIs de teste do navegador

Ações

Esta função de teste de navegador API cria uma nova sequência de ações utilizando o WebDriver. A sequência não é enviada para execução até que você chame a função ` Actions.perform ()` no seu código.

Uso

$browser.actions().sendKeys("synthetic").perform();

Parâmetros

Parâmetros Tipo Descrição
RETURN Actions Nova sequência de ações para esta instância
options Object Opções de configuração para a sequência Ações .

Exemplos

Exemplo 1: para clicar, use o seguinte código:

const element = await $browser.waitForAndFindElement(by, timeout);
$browser.actions().move({origin: element}).press().release().perform();

Exemplo 2: para passar o mouse sobre um elemento do navegador, use o seguinte código:

const element = await $browser.waitForAndFindElement(by, timeout);
$browser.actions().move({origin: element, duration: 2000}).perform();

Para ser compatível com a função mouseMove antiga, use o comando a seguir:

$browser.actions().mouseMove(element).perform();
Nota: As APIs de teste de navegadores oferecem suporte ao $browser.actions().mouseMove() método para garantir a compatibilidade com versões anteriores e implementam o método com, $browser.actions().move() uma vez que o método foi removido por Selenium em 2021, conforme descrito neste PR.

Exemplo 3: para enviar chaves, execute o código a seguir:

await $browser.get("http://www.bing.com");
await $browser.actions().sendKeys("synthetic").perform();

addHeader

Este teste de navegador API modifica o cabeçalho das solicitações feitas a HTTP.

Uso

$browser.addHeader(key: string, val: string): Promise<void>;

Parâmetros

Parâmetros Tipo Descrição
RETURN Promise<void> O valor devolvido é uma promessa.
key string O nome do cabeçalho ` HTTP `.
val string O valor do cabeçalho ` HTTP `.

Exemplos

await $browser.addHeader(
  "User-Agent",
  "Mozilla/5.0 (iPhone; CPU OS 10_15_5 (Ergänzendes Update) like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.1 Mobile/14E304 Safari/605.1.15"
);

await $browser.get("https://www.yahoo.com/");
await $browser.takeScreenshot();

await $browser.addHeader(
  "User-Agent",
  "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:86.0) Gecko/20100101 Firefox/86.0"
);

await $browser.get("https://www.yahoo.com/");
await $browser.takeScreenshot();

addHeaders

Este teste de navegador API modifica o cabeçalho das solicitações feitas a HTTP.

Uso

$browser.addHeaders(headers: { [key: string]: string }): Promise<void>;

Parâmetros

Parâmetros Tipo Descrição
RETURN Promise<void> O valor devolvido é uma promessa.
headers { [key: string]: string } Cabeçalhos de HTTP

Exemplos

await $browser.addHeaders({
  key1: "val1",
  key2: "val2",
});

addHostnamesToDenylist

Este teste de navegador API adiciona nomes de host à sua lista de bloqueios.

Uso

$browser.addHostnamesToDenylist(hostnameArr: string[]): Promise<void>
Observação: ` Instana ` fornece a addHostnamesToDenylist função para a filtragem ` URL `, mas não remove a addHostnamesToBlacklist função para garantir que o código seja compatível com versões anteriores.
$browser.addHostnamesToBlacklist(hostnameArr: string[]): Promise<void>

Parâmetros

Parâmetros Tipo Descrição
RETURN Promise<void> O valor devolvido é uma promessa.
hostnameArr string[] Nome do host para corresponder e suportar curingas

Exemplos

await $browser.addHostnamesToDenylist(["*.css", "*.png"]);
await $browser.addHostnamesToAllowlist(["*"]);

addHostnamesToAllowlist

Este teste de navegador API adiciona nomes de host à sua lista de permissões.

Uso

$browser.addHostnamesToAllowlist(hostnameArr: string[]): Promise<void>
Observação: Instana fornece a addHostnamesToAllowlist função para filtragem de URL, mas não remove a addHostnamesToWhitelist função para garantir que o código seja compatível com versões anteriores.
$browser.addHostnamesToWhitelist(hostnameArr: string[]): Promise<void>

Parâmetros

Parâmetros Tipo Descrição
RETURN Promise<void> O valor devolvido é uma promessa.
hostnameArr string[] Nome do host para correspondência e curingas de suporte

Exemplos

await $browser.addHostnamesToDenylist(["*.css", "*.png"]);
await $browser.addHostnamesToAllowlist(["*"]);

addHostnameToDenylist

Este teste de navegador API adiciona um nome de host à sua lista de bloqueios.

Uso

$browser.addHostnameToDenylist(hostname: string): Promise<void>
Observação: Instana fornece a addHostnameToDenylist função para filtragem de URL, mas não remove a addHostnameToBlacklist função para garantir que o código seja compatível com versões anteriores.
$browser.addHostnameToBlacklist(hostname: string): Promise<void>

Parâmetros

Parâmetros Tipo Descrição
RETURN Promise<void> O valor devolvido é uma promessa.
hostname string O nome do host para corresponder e suportar curingas

Exemplos

await $browser.addHostnameToDenylist(`*.css`);
await $browser.addHostnameToAllowlist(`*`);

addHostnameToAllowlist

Este teste de navegador API adiciona um nome de host à sua lista de permissões.

Uso

$browser.addHostnameToAllowlist(hostname: string): Promise<void>
Observação: ` Instana ` fornece a addHostnameToAllowlist função para a filtragem ` URL `, mas não remove a addHostnameToWhitelist função para garantir que o código seja compatível com versões anteriores.
$browser.addHostnameToWhitelist(hostname: string): Promise<void>

Parâmetros

Parâmetros Tipo Descrição
RETURN Promise<void> O valor devolvido é uma promessa.
hostname string O nome do host para corresponder e suportar curingas.

Exemplos

await $browser.addHostnameToDenylist(`*.css`);
await $browser.addHostnameToAllowlist(`*`);

clearProxy

Este teste de navegador API limpa ou remove a configuração atual do proxy.

deleteHeader

Este teste de navegador API exclui o cabeçalho definido pelo usuário.

Uso

$browser.deleteHeader(key: string): Promise<void>;

Parâmetros

Parâmetros Tipo Descrição
RETURN Promise<void> Uma promessa que será resolvida quando este comando for concluído
key string O nome do cabeçalho ` HTTP `.

Exemplos

await $browser.addHeader('header1-xxx', 'abcd');
await $browser.addHeaders({
    key1: 'val1',
    key2: 'val2',
});
await $browser.deleteHeaders(['key1']);

await $browser.get(`http://localhost:${devport}/header-test`);
let userHeaders: Map<string, any>  = $browser.getHeaders();
console.log("User customized headers: ", [...userHeaders]);
expect(userHeaders.size).toEqual(2);

deleteHeaders

Este teste de navegador API exclui os cabeçalhos definidos pelo usuário.

Uso

$browser.deleteHeaders: (header: string[]) => Promise<void>;

Parâmetros

Parâmetros Tipo Descrição
RETURN Promise<void> Uma promessa que será resolvida quando este comando for concluído
header string[] HTTP Nomes dos cabeçalhos.

Exemplos

await $browser.addHeader('header1-xxx', 'abcd');
await $browser.addHeaders({
    key1: 'val1',
    key2: 'val2',
});
await $browser.deleteHeaders(['key1']);

await $browser.get(`http://localhost:${devport}/header-test`);
let userHeaders: Map<string, any>  = $browser.getHeaders();
console.log("User customized headers: ", [...userHeaders]);
expect(userHeaders.size).toEqual(2);

deleteHostnameFromDenylist

Este teste de navegador API remove um nome de host da sua lista de bloqueios.

Uso

$browser.deleteHostnameFromDenylist(hostname: string): Promise<void>;
Observação: Instana fornece a deleteHostnameFromDenylist função para filtragem de URL, mas não remove a deleteHostnameFromBlacklist função para garantir que o código seja compatível com versões anteriores.
$browser.deleteHostnameFromBlacklist(hostname: string): Promise<void>;

Parâmetros

Parâmetros Tipo Descrição
RETURN Promise<void> O valor devolvido é uma promessa.
hostname string O nome do host para corresponder e suportar curingas.

deleteHostnameFromAllowlist

Essa API de teste do navegador exclui um nome do host da lista de permissões.

Uso

$browser.deleteHostnameFromAllowlist(hostname: string): Promise<void>;
Observação: O código adiciona a deleteHostnameFromAllowlist função ao ` API `, mas não remove a deleteHostnameFromWhitelist função, a fim de garantir que o código seja compatível com versões anteriores.
$browser.deleteHostnameFromWhitelist(hostname: string): Promise<void>;

Parâmetros

Parâmetros Tipo Descrição
RETURN Promise<void> O valor devolvido é uma promessa.
hostname string O nome do host para corresponder e suportar curingas.

deleteHostnamesFromDenylist

Este teste de navegador API exclui nomes de host da sua lista de bloqueados.

Uso

$browser.deleteHostnamesFromDenylist(hostnameArr: string[]): Promise<void>
Observação: Instana fornece a deleteHostnamesFromDenylist função para filtragem de URL, mas não remove a deleteHostnamesFromBlacklist função para garantir que o código seja compatível com versões anteriores.
$browser.deleteHostnamesFromBlacklist(hostnameArr: string[]): Promise<void>

Parâmetros

Parâmetros Tipo Descrição
RETURN Promise<void> O valor devolvido é uma promessa.
hostnameArr string[] O nome do host para corresponder e suportar curingas.

deleteHostnamesFromAllowlist

Este teste de navegador API exclui nomes de host da sua lista de permissões.

Uso

$browser.deleteHostnamesFromAllowlist(hostnameArr: string[]): Promise<void>
Observação: Instana fornece a deleteHostnamesFromAllowlist função para filtragem de URL, mas não remove a deleteHostnamesFromWhitelist função para garantir que o código seja compatível com versões anteriores.
$browser.deleteHostnamesFromWhitelist(hostnameArr: string[]): Promise<void>

Parâmetros

Parâmetros Tipo Descrição
RETURN Promise<void> O valor devolvido é uma promessa.
hostnameArr string[] O nome do host para corresponder e suportar curingas.

dólar-dólar

O comando $$ é um atalho para chamar o comando findElements para buscar diversos elementos na página O comando retorna uma matriz com os resultados do elemento Esses resultados têm um protótipo estendido para chamar comandos de ação

É possível encadear $ ou $$ juntos para navegar na árvore do DOM

Para obter mais informações sobre como selecionar elementos específicos, consulte Seletores CSS.

Parâmetros

Nome Tipo Descrição
RETURN Promise<WebElement[]> O valor retornado é uma promessa que será resolvida com uma matriz WebElements.
selector String, Function A função Selector ou JavaScript para buscar um determinado elemento.

Exemplos

O arquivo index.html é o seguinte:

<ul id="menu">
  <li><a href="/">Home</a></li>
  <li><a href="/">Developer Guide</a></li>
  <li><a href="/">API</a></li>
  <li><a href="/">Contribute</a></li>
</ul>

Use $$ para localizar elementos da seguinte forma:

test("should get text a menu link", async () => {
  const menu = (await $browser.$$("#menu"))[0];
  const li = await menu.$$("li");

  console.log(await li[2].$("a").getText()); // outputs: "API"
});

test("should get text a menu link - JS Function", async () => {
  const text = (
    await $browser.$$(function () {
      // Arrow function is not allowed here.
      return document.querySelectorAll("#menu"); // Element[]
    })
  )[0];

  const li3Text = await (await text.$$("li"))[2].$("a").getText();
  console.log(li3Text); // outputs: "API"
});

dólar

O comando $ é um atalho para chamar o comando findElement para buscar um único elemento na página.. O comando retorna um objeto.. O objeto possui um protótipo estendido, para chamar comandos de ação.

É possível encadear $ ou $$ juntos para navegar na árvore do DOM

Para obter mais informações sobre como selecionar elementos específicos, consulte Seletores CSS.

Parâmetros

Nome Tipo Descrição
RETURN WebElementPromise O valor retornado é um objeto do tipo ` WebElementPromise `.
selector String, Function A função Seletor ou JavaScript para buscar diversos elementos

Exemplos

O arquivo index.html é o seguinte:

<ul id="menu">
  <li><a href="/">Home</a></li>
  <li><a href="/">Developer Guide</a></li>
  <li><a href="/">API</a></li>
  <li><a href="/">Contribute</a></li>
</ul>

Use $para localizar o elemento da seguinte forma:

test("should get text a menu link", async () => {
  const text = await $browser.$("#menu").$$("li");
  console.log(await text[2].$("a").getText()); // outputs: "API"
});

test("should get text a menu link - JS Function", async () => {
  const text = await $browser.$(function () {
      // Arrow function is not allowed here.
      return document.querySelector("#menu"); // Element
    }).$$("li");

  console.log(text.$$("li")[2].$("a").getText()); // outputs: "API"
});

executar

Este teste de navegador API executa o [Command] fornecido utilizando command.Executor o WebDriver.

Uso

$browser.execute(command) => Promise<T>

Promise<T> é uma promessa que será resolvida com o resultado do comando

Parâmetros

Parâmetro Tipo Descrição
command Command Comando para planejar

executeAsyncScript

Este teste de navegador API executa um trecho de código assíncrono JavaScript no contexto do quadro ou janela selecionado no momento. O fragmento de script é executado como o corpo de uma função anônima. Se o script for fornecido como um objeto de função, essa função será convertida em uma sequência para injeção na janela de destino.

Se você fornecer quaisquer argumentos além do script, ele será incluído como argumentos de script e poderá ser referido usando o objeto arguments . Os argumentos podem ser um booleano, número, sequência ou WebElement. Matrizes e objetos também podem ser usados como argumentos de script se cada item aderir aos tipos indicados.

Ao contrário da execução síncrona de ` JavaScript ` com `executeScript`, os scripts executados com esta função devem indicar explicitamente que foram concluídos, iniciando a função de retorno de chamada fornecida. Esse retorno de chamada é sempre injetado na função executada como o último argumento e, portanto, pode ser referido com arguments[arguments.length - 1]. As etapas a seguir são executadas para resolver o valor de retorno desta função no primeiro argumento para a função de retorno de chamada do script:

  • Para um elemento HTML, o valor é resolvido para WebElement.
  • Valores de retorno nulos e indefinidos são resolvidos para nulo.
  • Booleanos, números e sequências são resolvidos como estão.
  • As funções são resolvidas para sua representação de sequência..
  • Para matrizes e objetos, cada item de membro é convertido de acordo com as regras indicadas

Uso

$browser.executeAsyncScript<T>(script: string|Function, ...var_args: any[]): Promise<T>;

Parâmetros

Parâmetros Tipo Descrição
RETURN Promise.<T> Uma promessa que será resolvida com o valor de retorno do script..
script string, Function O script a ser executado
...args * Os argumentos a serem passados para o script

Exemplos

Exemplo 1: Para executar uma suspensão sincronizada com a janela atualmente selecionada, use os comandos conforme mostrado no exemplo a seguir:

const start = new Date().getTime();
$browser.executeAsyncScript(
    "window.setTimeout(arguments[arguments.length - 1], 500);"
  ).then(function () {
    console.log("Elapsed time: " + (new Date().getTime() - start) + " ms");
  });

Exemplo 2: Para sincronizar um teste com um aplicativo Ajax, use os comandos conforme mostrado no exemplo a seguir:

const button = $browser.$("#compose-button");
button.click();
$browser.executeAsyncScript(
  "var callback = arguments[arguments.length - 1];" +
    "mailClient.getComposeWindowWidget().onload(callback);"
);
$browser.switchTo().frame("composeWidget");
$browser.$("#to").sendKeys("dog@example.com");

Exemplo 3: Para injetar XMLHttpRequest e aguardar pelo resultado, use os comandos a seguir: Neste exemplo, o script de injeção é especificado com um literal de função. Quando você usa esse formato, a função é convertida em uma sequência para injeção. Portanto, a função não deve fazer referência a nenhum símbolo que não esteja definido no escopo da página em teste..

$browser.executeAsyncScript(function () {
    var callback = arguments[arguments.length - 1];
    var xhr = new XMLHttpRequest();
    xhr.open("GET", "/resource/data.json", true);
    xhr.onreadystatechange = function () {
      if (xhr.readyState == 4) {
        callback(xhr.responseText);
      }
    };
    xhr.send("");
  }).then(function (str) {
    console.log(JSON.parse(str)["food"]);
  });

executeScript

Esta ferramenta de teste de navegadores API executa um trecho do código JavaScript no contexto do quadro ou janela selecionado no momento. O fragmento de script é executado como o corpo de uma função anônima. Se você fornecer o script como um objeto de função, essa função será convertida em uma sequência para injeção na janela de destino.

Se você fornecer argumentos além do script, ele será incluído como argumentos de script e poderá ser referenciado usando o objeto arguments . Os argumentos podem ser um booleano, número, sequência ou WebElement. Matrizes e objetos também podem ser usados como argumentos de script se cada item aderir aos tipos indicados.

O script pode fazer referência a quaisquer variáveis acessíveis na janela atual. Além disso, o script é executado no contexto da janela, portanto document pode ser usado para fazer referência ao documento atual. Nenhuma variável local está disponível após a conclusão da execução do script, embora as variáveis globais persistam

Se o script tiver um valor de retorno, ou seja, se o script contiver uma instrução de retorno, as etapas a seguir serão executadas para resolver o valor de retorno dessa função:

  • Para um elemento HTML, o valor é resolvido para WebElement.
  • Valores de retorno nulos e indefinidos são resolvidos para nulo.
  • Booleanos, números e sequências são resolvidos como estão.
  • As funções são resolvidas para sua representação de sequência..
  • Para matrizes e objetos, cada item de membro é convertido de acordo com as regras indicadas

Uso

$browser.executeScript<T>(script: string|Function, ...var_args: any[]): Promise<T>;

Parâmetros

Parâmetros Tipo Descrição
RETURN Promise.<T> Uma promessa que será resolvida com o valor de retorno do script..
script string, Function O script a ser executado
...args * Os argumentos a serem passados para o script

findElement

Este teste de navegador API localiza um elemento na página. Se o elemento não puder ser localizado, o driver retornará error.NoSuchElementError

Uso

$browser.findElement(locator: Locator): WebElementPromise;

Parâmetros

Parâmetros Tipo Descrição
RETURN WebElementPromise Um WebElement que pode ser usado para emitir comandos no elemento localizado. Se o elemento não for localizado o elemento será invalidado e todos os comandos planejados serão parados.
locator By , function O localizador a ser usado

Exemplos

Você não deve usar esta função para testar se um elemento está presente na página.. Em vez disso, você deve usar findElements :

$browser.findElements($driver.By.id("foo"))
  .then((found) => console.log("Element found? %s", !!found.length));

É possível definir os critérios de procura para um elemento usando um dos factories no namespace webdriver.By ou como um objeto webdriver.By.Hash curto. Por exemplo, as duas instruções a seguir são equivalentes:

var e1 = $browser.findElement($driver.By.id("foo"));
var e2 = $browser.findElement({ id: "foo" });

Você também pode fornecer uma função de localização personalizada, que receba como entrada esta instância e retorne um `WebElement ` ou uma promessa que será resolvida com um ` WebElement `. Se a promessa retornada for resolvida com uma matriz de WebElements,, o WebDriver usa o primeiro elemento. Por exemplo, para localizar o primeiro link visível em uma página, é possível utilizar os seguintes comandos:

var link = $browser.findElement(firstVisibleLink);

function firstVisibleLink(driver) {
  var links = driver.findElements(By.tagName("a"));
  return promise.filter(links, function (link) {
    return link.isDisplayed();
  });
}

findElements

Este teste de navegador API procura vários elementos na página. Para obter informações sobre estratégias de localização de elementos, consulte findElement .

Uso

$browser.findElements(locator: Locator): Promise<WebElement[]>;

Parâmetros

Parâmetros Tipo Descrição
RETURN Promessa <WebElement[ ]> Uma promessa que será resolvida com uma matriz de WebElements..
locator By, function O localizador a ser usado

generateTOTPToken

Este teste de navegador API gera um token de senha de uso único baseada no tempo (TOTP) a partir de uma chave TOTP. Você pode usar este link API para fazer login com autenticação de dois fatores.

Uso

$browser.generateTOTPToken(key: string, options?: TOTPOptions): string;

Parâmetros

Parâmetro Tipo Descrição
RETURN string Um token de senha descartável baseada em tempo (TOTP)
key string Uma chave TOTP, sequências base32
options Object,undefined Opcional: configurações opcionais, por exemplo, {digits: 8, algorithm: "SHA-512", period: 60} As configurações padrão são {digits: 6, algorithm: "SHA-1", period: 30}

Exemplos

Exemplo 1: para gerar um token TOTP e efetuar login com autenticação de dois fatores no teste de Script do Navegador:

await $browser.waitForAndFindElement($driver.By.id("password"), 15000);

let totp_token = $browser.generateTOTPToken($secure.totpKey);

await $browser.findElement($driver.By.id("password")).then((element) => {
  return element.clear().then(() => {
    return element.sendKeys(totp_token);
  });
});

Exemplo 2: para gerar um token TOTP no teste de script SIDE Selenium :

{
  "id": "ec51296b-4d16-4167-ac83-ba87f89cc0c7",
  "comment": "Generate a TOTP token from a TOTP key",
  "command": "executeScript",
  "target": "return $browser.generateTOTPToken($secure.totpKey);",
  "targets": [],
  "value": "totpToken"
}

obter

Este teste de navegador API redireciona para URL.

Parâmetros

Parâmetros Tipo Descrição
RETURN Promise<void> Uma promessa que será resolvida quando o documento for concluído.
url string O endereço completo URL para acessar.

getAllWindowHandles

Este teste de navegador API executa um comando para recuperar a lista atual de identificadores de janela disponíveis.

Uso

$browser.getAllWindowHandles(): Promise<string[]>;

Parâmetros

Parâmetro Tipo Descrição
RETURN Promise<string[]> Uma promessa que será resolvida com uma matriz de manipulações de janela.

getCapabilities

Este teste de navegador API obtém as capacidades desta instância.

Uso

$browser.getCapabilities(): Promise<Capabilities>;

Parâmetros

Parâmetro Tipo Descrição
RETURN Promise<Capabilities> Uma promessa que será resolvida com os recursos dessa instância

getCurrentUrl

Este teste de navegador API executa um comando para recuperar o URL da página atual.

Parâmetros

Parâmetro Tipo Descrição
RETURN Promise<string> Uma promessa que será cumprida com o atual URL.

getHeaders

Este teste de navegador API obtém cabeçalhos personalizados pelo usuário.

Parâmetros

Parâmetro Tipo Descrição
RETURN Map<string, any> Cabeçalhos definidos pelo usuário

Exemplos

await $browser.addHeader('header1-xxx', 'abcd');
await $browser.addHeaders({
    key1: 'val1',
    key2: 'val2',
});
await $browser.deleteHeaders(['key1']);

await $browser.get(`http://localhost:${devport}/header-test`);
let userHeaders: Map<string, any>  = $browser.getHeaders();
console.log("User customized headers: ", [...userHeaders]);
expect(userHeaders.size).toEqual(2);

getPageSource

Este teste de navegador API recupera o código-fonte da página atual. A origem retornada é uma representação do DOM subjacente Não espere que a origem seja formatado ou escapado da mesma maneira que a resposta bruta enviada do servidor da Web

Parâmetros

Parâmetro Tipo Descrição
RETURN Promise<string> Uma promessa que será resolvida com a origem da página atual

getProxy

Este teste de navegador API recupera a configuração atual do proxy.

Uso

$browser.getProxy(): FFProxyConfig | CProxyConfig;

Este método ` API ` também pode ser chamado por meio do $network objeto:

$network.getProxy(): FFProxyConfig | CProxyConfig;

Configuração de proxy

/**
 * Firefox extension - An object encapsulating a complete proxy configuration
 * https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/proxy/settings
 */
export interface FFProxyConfig {
  proxyType?: FFProxyType,
  http?: string;
  ssl?: string,
  ftp?: string;
  autoConfigUrl?: string,
  autoLogin?: boolean,
  httpProxyAll?: boolean,
  passthrough?: string,
  proxyDNS?: boolean,
  socks?: string,
  socksVersion?: number,
}

/**
 * Chrome extension - An object encapsulating a complete proxy configuration
 * https://developer.chrome.com/docs/extensions/reference/proxy/#type-ProxyConfig
 */
export interface CProxyConfig {
  mode: CProxyType,
  rules?: {
    bypassList?: string[],
    fallbackProxy?: ProxyServer,
    proxyForFtp?: ProxyServer,
    proxyForHttp?: ProxyServer,
    proxyForHttps?: ProxyServer,
    singleProxy?: ProxyServer,
  },
  pacScript?: {
    data?: string,
    mandatory?: boolean,
    url?: string,
  },
};

getSession

Este teste de navegador API recupera a sessão deste cliente.

Parâmetros

Parâmetro Tipo Descrição
RETURN Promise<Session> Uma promessa para a sessão deste cliente

getTitle

Este teste de navegador API executa um comando para recuperar o título da página atual.

Parâmetros

Parâmetro Tipo Descrição
RETURN Promise<string> Uma promessa que será resolvida com o título da página atual.

getWindowHandle

Este teste de navegador API executa um comando para recuperar o identificador da janela atual.

Parâmetros

Parâmetro Tipo Descrição
RETURN Promise<string> Uma promessa que será resolvida com o identificador de janela atual

gerenciar

Este teste de navegador API obtém a interface de opções desta instância.

Parâmetros

Parâmetro Tipo Descrição
RETURN Options A interface de opções para esta instância

Opções

As opções fornecem métodos para o gerenciamento do estado do navegador e do driver

Tipo Descrição
addCookie(spec: IWebDriverOptionsCookie): Promise<void> Planeja um comando para incluir um cookie..
deleteAllCookies(): Promise<void>; Planeja um comando para excluir todos os cookies visíveis para a página atual.
deleteCookie(name: string): Promise<void>; Planeja um comando para excluir o cookie com o nome fornecido Se nenhum cookie com o nome fornecido visível para a página atual, esse comando será um no-op.
getCookies(): Promise<IWebDriverCookie[]>; Planeja um comando para recuperar todos os cookies visíveis para a página atual Cada cookie é retornado como um objeto ` JSON `, conforme descrito pelo protocolo de comunicação ` WebDriver `.
getCookie(name: string): Promise<IWebDriverCookie>; Planeja um comando para recuperar o cookie com o nome fornecido Retorna nulo se nenhum cookie estiver disponível. O cookie é retornado como um objeto ` JSON `, conforme descrito pelo protocolo de comunicação ` WebDriver `.
logs(): Logs; Fornece a interface para gerenciar logs do driver.
getTimeouts(): Promise<ITimeouts>; Obtém os tempos limitesatuais
setTimeouts(timeouts: ITimeouts): Promise<void>; Configura os tempos limitesatuais
window(): Window; Fornece a interface para gerenciar a janelaatual..

IWebDriverCookie

Parâmetros Tipo Descrição
name string O nome do cookie..
value string O valor do cookie.
path string O caminho do cookie O padrão é "/" quando um cookie é incluído.
domain string O domínio para o qual o cookie está visível Quando um cookie é adicionado, o valor padrão é o atributo ` URL ` do documento do contexto de navegação atual.
secure boolean O parâmetro indica se o cookie é seguro. O valor padrão é false, o que significa que o cookie não é um cookie seguro.
httpOnly boolean O parâmetro indica se o cookie é um cookie exclusivamente do domínio HTTP. O valor padrão é false, o que significa que o cookie não é um cookie exclusivo do HTTP.
expiry number A expiração é sempre retornada em segundos desde a época ao recuperar cookies do navegador.

ITimeouts

Parâmetro Tipo Descrição
script number Especifica a quantidade máxima de tempo a aguardar para que um script avaliado seja executado
pageLoad number Especifica a quantidade máxima de tempo para aguardar uma página concluir o carregamento. O padrão é 300000 milissegundos.
implicit number Especifica a quantidade máxima de tempo a aguardar para que um localizador de elemento seja bem-sucedido ao localizar elementos na página O padrão é 0 milissegundos.

Janela

export interface ILocation {
  x: number;
  y: number;
}

export interface ISize {
  width: number;
  height: number;
}

export interface IRectangle {
  x: number;
  y: number;
  width: number;
  height: number;
}

Uma interface para o gerenciamento da janela atual

Tipo Descrição
getPosition(): Promise<ILocation>; Recupera a posição atual da janela, em relação ao canto superior esquerdo da tela
setPosition(x: number, y: number): Promise<void>; Reposiciona a janela atual
getSize(): Promise<ISize>; Recupera o tamanho atual da janela..
setSize(width: number, height: number): Promise<void>; Redimensiona a janela atual
getRect(): Promise<IRectangle>; Retorna o tamanho e a posição da janela de nível superior atual
setRect({x, y, width, height}: Partial<IRectangle>): Promise<IRectangle>; Configura o tamanho e a posição da janela de nível superior atual É possível atualizar apenas o tamanho omitindo x e y ou apenas a posição omitindo width e height opções.
maximize(): Promise<void>; Maximiza a janela atual..

Exemplos

let tm = await $browser.manage().getTimeouts();
console.log('current timeout', tm.implicit, tm.pageLoad, tm.script);

await $browser.manage().timeouts().pageLoadTimeout(119);
tm = await $browser.manage().getTimeouts();
expect(tm.pageLoad).toBe(119);
console.log('current timeout', tm.implicit, tm.pageLoad, tm.script);

await $browser.manage().timeouts().pageLoadTimeout(89);
tm = await $browser.manage().getTimeouts();
expect(tm.pageLoad).toBe(89);
console.log('current timeout', tm.implicit, tm.pageLoad, tm.script);

setAuthentication

Este teste de navegador API altera as configurações de autenticação para as próximas solicitações HTTP.

Uso

$browser.setAuthentication(authName: string, authPass: string): Promise<void>;

Parâmetros

Parâmetros Tipo Descrição
RETURN Promise<void> Uma promessa é resolvida quando as configurações são aplicadas
authName string Nome do usuário para a autenticação
authPass string A senha do usuário para autenticação

Exemplos

await $browser.setAuthentication(basicauthuser, password);
await $browser.get(`http://${httpserver}/basic/page1.html`)
.then(() => $browser.takeScreenshot());

setProxy

Este teste de navegador API configura um servidor proxy a ser usado para todas as solicitações HTTP, HTTPS e FTP.

Uso

$browser.setProxy(proxyURL: string | URL, noProxy?: string): Promise<void>;

Este método ` API ` também pode ser chamado por meio do $network objeto.

$network.setProxy(proxyURL: string | URL, noProxy?: string): Promise<void>

Parâmetros

Parâmetros Tipo Descrição
RETURN Promise<void> Uma promessa é resolvida quando as configurações são aplicadas
proxyURL string, URL Uma string do tipo ` URL ` para se conectar ao servidor proxy. A string ` URL ` deve estar no formato definido no método ` url.parse ` ( urlString ) do nó. Por exemplo, http://proxy_host:8888 ou https://user:pass@proxy_host:8888
noProxy string Opcional: uma lista separada por vírgula de hosts que ignora todos os proxies.

setProxyAdvanced

Este teste de navegador API define a configuração do proxy utilizando o formato compatível com o Chrome ou com a extensão Firefox API para o uso de proxy.

Uso

$browser.setProxyAdvanced(proxyConfig: CProxyConfig | FFProxyConfig, authName?: string, authPass?: string): Promise<void>;

Este método ` API ` também pode ser chamado por meio do $network objeto.

$network.setProxyAdvanced(proxyConfig: CProxyConfig | FFProxyConfig, authName?: string, authPass?: string): Promise<void>;

Parâmetros

Parâmetro Tipo Descrição
RETURN Promise<void> Uma promessa é resolvida quando as configurações são aplicadas
proxyConfig CProxyConfig ou FFProxyConfig Um objeto de configuração de proxy no Chrome ou no encapsulamento específico do Firefox
authName string Opcional: um nome de usuário do servidor proxy para autenticação..
authPass string Opcional: uma senha do usuário do servidor proxy para autenticação

Exemplos

async function testProxyAdvanced() {
  await $browser.clearProxy();
  var ffconfig = {
    proxyType: "manual",
    //proxyType: "autoConfig",
    http: proxy_4,
    ssl: proxy_4,
    ftp: proxy_4,
    autoConfigUrl: pacfile,
    passthrough: noproxy,
    autoLogin: true,
  }

  var pxyserver = {
    host: httpserver,
    port: 8088,
    scheme: "http",
  }

  var cconfig = {
    mode: "fixed_servers",
    rules: {
      bypassList: noproxy.split(','),
      fallbackProxy: {
        host: "my-proxy-server.us.ibm.com",
        port: 8080,
      },
      proxyForFtp: pxyserver,
      proxyForHttp: pxyserver,
      proxyForHttps: pxyserver,
    },
    pacScript: {
      url: pacfile,
    },
  }

  var bname = null;
  await $browser.getCapabilities().then(cap=> {
    bname = cap.getBrowserName();
   });

  var config = (bname == 'chrome') ? cconfig : ffconfig;

  await $browser.setProxyAdvanced(config, proxyuser, password);
  await $browser.get(`http://${httpserver}/demo/page2.html`)
    .then(() => $browser.takeScreenshot());
}

setProxyAuthentication

Este teste de navegador API altera as configurações de autenticação do proxy para as próximas solicitações HTTP, HTTPS e FTP.

Uso

$browser.setProxyAuthentication(authName: string, authPass: string): Promise<void>;

Parâmetros

Parâmetros Tipo Descrição
RETURN Promise<void> Uma promessa é resolvida quando as configurações são aplicadas
authName string Um nome de usuário do servidor proxy para autenticação..
authPass string Uma senha de usuário do servidor proxy para autenticação..

Exemplos

async function testProxyAuthentication() {
  await $browser.clearProxy();
  await $browser.setProxy(proxy_3, noproxy);
  await $browser.setProxyAuthentication(proxyuser, password);
  await $browser.get(`http://${httpserver}/demo/page2.html`)
    .then(() => $browser.takeScreenshot());
}

setProxyForHttp

Este teste de navegador API configura um servidor proxy a ser usado para todas as solicitações HTTP.

Uso

$browser.setProxyForHttp(proxyURL: string | URL, noProxy?: string): Promise<void>

Este método ` API ` também pode ser chamado por meio do $network objeto.

$network.setProxyForHttp(proxyURL: string | URL, noProxy?: string): Promise<void>

Parâmetros

Parâmetro Tipo Descrição
RETURN Promise<void> Uma promessa é resolvida quando as configurações são aplicadas
proxyURL string, URL Uma string do tipo ` URL ` para se conectar ao servidor proxy. A string ` URL ` deve estar no formato definido no método ` url.parse ` ( urlString ) do Node. Por exemplo, http://proxy_host:8888 ou https://user:pass@proxy_host:8888
noProxy string Opcional: uma lista separada por vírgula de hosts que devem ignorar todos os proxies.

Exemplos

let website;
let proxyServer = "proxyHost:proxyPort";

console.log(">>>>>>>>>>>>>>>>>>>", "Clear proxy configuration");
await $network.clearProxy();
console.log(">>>>>>>>>>>>>>>>>>>", "Set proxy configuration for HTTP request");
await $network.setProxyForHttp(proxyServer);
website = await accessWebSite();
checkHostname("www.google.com.hk", website)

setProxyForHttps

Este teste de navegador API configura um servidor proxy a ser usado para todas as solicitações HTTPS.

Uso

$browser.setProxyForHttps(proxyURL: string | URL, noProxy?: string): Promise<void>;

Este método ` API ` também pode ser chamado por meio do $network objeto.

$network.setProxyForHttps(proxyURL: string | URL, noProxy?: string): Promise<void>;

Parâmetros

Parâmetro Tipo Descrição
RETURN Promise<void> Uma promessa é resolvida quando configurações são aplicadas
proxyURL string, URL Uma string do tipo ` URL ` para se conectar ao servidor proxy. A string ` URL ` deve estar no formato definido no método ` url.parse ` ( urlString ) do nó. Por exemplo, http://proxy_host:8888 ou https://user:pass@proxy_host:8888
noProxy string Opcional: uma lista separada por vírgula de hosts que devem ignorar todos os proxies.

Exemplos

let website;
let sslProxyServer = "username:password@proxyHost:proxyPort";

console.log(">>>>>>>>>>>>>>>>>>>", "Clear proxy configuration");
await $network.clearProxy();
console.log(">>>>>>>>>>>>>>>>>>>", "Set proxy configuration for HTTPS request");
let testURL = new URL("http://" + sslProxyServer);
await $network.setProxyForHttps(testURL);
website = await accessWebSite();
checkHostname("www.google.com", website);

setProxyPAC

Este teste de navegador API configura um servidor proxy por meio de um script de configuração automática de proxy (PAC).

Uso

$browser.setProxyPAC(pacScriptURL: string, noProxy?: string, authMap?: Map<string, any>): Promise<void>;

Parâmetros

Parâmetro Tipo Descrição
RETURN Promise<void> Uma promessa é resolvida quando as configurações são aplicadas
pacScriptURL string A função ` URL ` do script PAC.
noProxy string Opcional: uma lista separada por vírgula de hosts que devem ignorar todos os proxies.
authMap Map Opcional: um mapa de credenciais de autenticação a serem fornecidas para os servidores proxy, que são chaveados pelo Hostname dos servidores proxy.. Os valores desse mapa devem ser definidos no formato {username: "authUsername", password: "authPassword"}

Exemplos

const httpserver = '<DemoServerIP>';
const noproxy = "localhost,google.com,192.168.1.0/24";
const pacfile = `http://${httpserver}/pacfile`;
const authmap = new Map([
  [ httpserver, {username: "proxyuser", password: "passw0rd"} ],
  [ "httpserver2", {username: "user1", password: "passw0rd"} ],
])

async function testProxyPAC() {
  await $browser.clearProxy();
  await $browser.setProxyPAC(pacfile, noproxy, authmap);
  await $browser
    .get(`http://${httpserver}/demo/page2.html`)
    .then(() => $browser.takeScreenshot());
}

suspender

Este teste de navegador API programa um comando para colocar o driver em modo de suspensão por um determinado período de tempo.

Parâmetros

Parâmetros Tipo Descrição
RETURN Promise<void> Uma promessa que será resolvida quando o sono terminar.
ms number A quantia de tempo, em milissegundos, para suspensão..

Exemplos

await $browser.get("https://www.yahoo.com/");
await $browser.sleep(3 * 1000);
await $browser.takeScreenshot();

switchTo

Este teste de navegador API oferece uma interface para mudar o foco do driver para outro quadro ou janela.

TargetLocator

Uma interface para alterar o foco do driver para um outro quadro ou janela.

Métodos de instância

Tipo Descrição
activeElement(): WebElementPromise; Planeja um comando recuperar o elemento document.activeElement no documento atual ou document.body se activeElement não estiver disponível.
defaultContent(): Promise<void>; Planeja um comando para alternar o foco de todos os comandos futuros para o primeiro quadro na página O quadro de destino pode ser especificado como um dos seguintes valores: - Um número que especifica um índice (com base em zero) no ` window.frames `. - Uma referência ` WebElement `, que corresponde a um elemento frame `DOM` ou iframe `DOM`. - O null valor `top` para selecionar o quadro mais à frente na página. A passagem de null parâmetros equivale a chamar ` defaultContent `.
frame(id: Number |WebElement| null): Promise<void>; Altera o foco de todos os comandos futuros para outro quadro na página..
parentFrame(): Promise<void>; Altera o foco de todos os comandos futuros para o quadro pai do quadro atualmente selecionado Este comando não terá efeito se o driver já estiver focado no contexto de navegação de nível superior
window(nameOrHandle: string): Promise<void>; Planeja um comando para mudar o foco de todos os comandos futuros para outra janela. Windows podem ser especificadas por seu window.name atributo ou por seu identificador (conforme retornado por ` getWindowHandle `).
newWindow(typeHint: string): Promise<void>; Cria uma janela do navegador e transfere o foco para a nova janela para os próximos comandos deste driver. typeHint "janela" ou "aba". A janela criada não tem a garantia de ser do tipo solicitado Se o driver não for compatível com o tipo solicitado, será aberta uma nova janela do navegador com o tipo que o driver suportar. A promessa retornada é resolvida quando o driver muda o foco para a nova janela.
alert(): AlertPromise; Planeja um comando para mudar o foco para o diálogo modal ativo, como aqueles abertos por window.alert(), window.confirm(), e window.prompt() A promessa retornada será rejeitada com um error.NoSuchAlertError se nenhum alerta estiver disponível.

Exemplos

/**
 * samples of getting current window handle
 * switch to a new window
 * open new page in new tab
 */
console.log("Windows handle: ", await $browser.getWindowHandle(), "Current url: ", await $browser.getCurrentUrl());
console.log("switch to calendar tab");
let originalWindow = await $browser.getWindowHandle();
await $browser.switchTo().newWindow();

/**
 * navigate to www.timeanddate.com
 * assert page title by getTitle() api
 * assert page title by getPageSource() api
 */
console.log("Access time and date page");
await $browser.get("http://www.timeanddate.com");
let page = await $browser.getPageSource();
assert.isTrue(page.includes("<title>timeanddate.com</title>"));
console.log("Page title: ", await $browser.getTitle());

/**
 * switch back to original window
 * take screenshot
 */
await $browser.switchTo().window(originalWindow);
await $browser.takeScreenshot();

takeScreenshot

Este teste de navegador API programa um comando para capturar uma imagem da tela. O motorista tenta retornar uma captura de tela dos seguintes elementos, em ordem de preferência:

  1. Página inteira
  2. Janela atual
  3. Parte visível do quadro atual
  4. Exibição inteira que contém o navegador

Parâmetros

Parâmetro Tipo Descrição
RETURN Promise<string> Uma promessa que será resolvida com a captura de tela como um PNG codificado base-64 .

espera

Este teste de navegador API aguarda que uma condição resulte em um valor "verdadeiro". A condição pode ser especificada por uma Condição, como uma função customizada ou como qualquer thenable de promessa.

Para uma Condição ou função, a espera avalia repetidamente a condição até que ela retorne um valor verdadeiro. Se ocorrerem erros enquanto o ` API ` avalia a condição, esses erros podem se propagar. Quando uma condição retorna uma promessa, o loop de pesquisa espera que ela seja resolvida e usa o valor resolvido para verificar se a condição foi atendida O tempo de resolução para uma promessa é sempre fatorado para verificar se uma espera atingiu o tempo limite

Se a condição fornecida for um ` WebElementCondition, `, a espera retorna um ` WebElementPromise ` que aponta para o elemento que satisfez a condição.

Uso

$browser.wait(
    condition: WebElementCondition,
    opt_timeout?: number,
    opt_message?: string): WebElementPromise;

Parâmetros

Parâmetro Tipo Descrição
RETURN Promise<string> Uma promessa que será resolvida com o primeiro valor verdadeiro retornado pela função de condição ou rejeitado se a condição atingir o tempo limite. Se a condição de entrada for uma instância de um ` WebElementCondition, `, o valor retornado será um ` WebElementPromise `.
condition IThenable<(T|null)> ou Condition<(T|null)> ou function(WebDriver): (T|null) A condição para aguardar, definida como uma promessa, objeto de condição ou uma função para avaliar como uma condição.
opt_timeout number A duração, em milissegundos, para aguardar que a condição seja verdadeira
opt_message string ou function Uma mensagem opcional para usar se a espera atingir o tempo limite.

Exemplos

Exemplo 1: Para aguardar até 10 segundos para um elemento estar presente na página, use os comandos conforme mostrado no exemplo a seguir:

async function example() {
  let button = await $browser.wait(
    $driver.until.elementLocated($driver.By.id("foo")),
    10000
  );
  await button.click();
}

Exemplo 2: Para aguardar um elemento e clicar, use os comandos conforme mostrado no exemplo a seguir:

await $browser.wait(until.elementLocated(by), timeout);
const element = await $browser.findElement(by, timeout);
await $browser.wait(until.elementIsVisible(element), timeout, `${by} not visible`);
await $browser.wait(until.elementIsEnabled(element), timeout, `${by} not enabled`);
await element.click();

waitForAndFindElement

Este teste de navegador API aguarda e localiza um elemento na página e aguarda até que ele fique visível. Se não for localizado, o monitoramento sintético retorna um erro. O valor de tempo limite é opcional. Ele é aplicado separadamente para ambas as tarefas de localizar o elemento e aguardar sua visibilidade.. Assim, no pior dos casos, este método pode levar até duas vezes o valor de tempo limite fornecido. O valor de tempo limite padrão é 1000 ms (1 segundo).

Um WebElementPromise será retornado se um elemento for localizado com o localizador fornecido nos parâmetros e o elemento se tornar visível ou quando as condições indicadas não forem atendidas dentro do timeoutespecificado.

Uso

$browser.waitForAndFindElement(locator: Locator, timeout?: number) : WebElementPromise;

A função é semelhante à seguinte:

const element = await $browser.wait(until.elementLocated(locator), timeout);
await $browser.wait(until.elementIsVisible(element), timeout);
return await $browser.findElement(locator);

Parâmetros

Parâmetros Tipo Descrição
RETURN WebElementPromise Um WebElement que pode ser usado para emitir comandos no elemento localizado. Se o elemento não for localizado o elemento será invalidado e todos os comandos planejados serão parados.
locator by.By | function O localizador a ser usado
timeout number Opcional: a quantidade de tempo, em milissegundos, a aguardar..

Exemplos

$browser.waitForAndFindElement($driver.By.id("username"), 10000);

waitForPendingRequests

Esta função é para compatibilidade com versões anteriores.

Uso

$browser.waitForPendingRequests(timeout?: number): Promise<void>;

A função é semelhante a

let script = "return document.readyState === 'complete'";
await $browser.wait(() => {
    return $browser.executeScript(script);
}, timeout);

Parâmetros

Parâmetros Tipo Descrição
RETURN Promise<void> Uma promessa que será resolvida quando o documento e todos os sub-recursos tiverem concluído o carregamento.
timeout number A quantidade de tempo, em milissegundos, a aguardar