Transferidor - Núcleo APIS

Este capítulo permite que você entenda várias APIs principais que são essenciais para o funcionamento do transferidor.

Importância das APIs do Protractor

O Protractor nos fornece uma ampla gama de APIs que são muito importantes para realizar as seguintes ações para obter o estado atual do site -

  • Obtendo os elementos DOM da página da web que iremos testar.
  • Interagindo com os elementos DOM.
  • Atribuindo ações a eles.
  • Compartilhando informações com eles.

Para realizar as tarefas acima, é muito importante entender as APIs do Protractor.

Várias APIs do Protractor

Como sabemos, o Protractor é um invólucro em torno do Selenium-WebDriver, que são as ligações WebDriver para Node.js. O transferidor tem as seguintes APIs -

Navegador

É um wrapper em torno de uma instância do WebDriver que é usado para lidar com comandos de nível de navegador, como navegação, informações de toda a página, etc. Por exemplo, o método browser.get carrega uma página.

Elemento

Ele é usado para pesquisar e interagir com o elemento DOM na página que estamos testando. Para isso, requer um parâmetro para localizar o elemento.

Localizadores (por)

É uma coleção de estratégias de localização de elementos. Os elementos, por exemplo, podem ser encontrados pelo seletor CSS, por ID ou por qualquer outro atributo ao qual eles estão vinculados com o modelo ng.

A seguir, discutiremos em detalhes sobre essas APIs e suas funções.

API do navegador

Conforme discutido acima, é um invólucro em torno de uma instância do WebDriver para manipular comandos no nível do navegador. Ele executa várias funções da seguinte forma -

Funções e suas descrições

As funções da API ProtractorBrowser são as seguintes−

browser.angularAppRoot

Esta função da API do navegador define o seletor CSS para um elemento no qual encontraremos o Angular. Normalmente, esta função está em 'body', mas no caso de ser nosso ng-app, está em uma subseção da página; pode ser um subelemento também.

browser.waitForAngularEnabled

Esta função da API do navegador pode ser definida como verdadeira ou falsa. Como o nome sugere, se esta função for definida como falsa, o Protractor não aguardará a conclusão das tarefas $ http e $ timeout angulares antes de interagir com o navegador. Também podemos ler o estado atual sem alterá-lo, chamando waitForAngularEnabled () sem passar um valor.

browser.getProcessedConfig

Com a ajuda desta função de APIs do navegador, podemos obter o objeto de configuração processado, incluindo especificações e recursos, que está sendo executado atualmente.

browser.forkNewDriverInstance

Como o nome sugere, essa função bifurcará outra instância do navegador para ser usada em testes interativos. Pode ser executado com o fluxo de controle ativado e desativado. O exemplo é dado abaixo para ambos os casos -

Example 1

Corrida browser.forkNewDriverInstance() com fluxo de controle habilitado -

var fork = browser.forkNewDriverInstance();
fork.get(‘page1’);

Example 2

Corrida browser.forkNewDriverInstance() com fluxo de controle desativado -

var fork = await browser.forkNewDriverInstance().ready;
await forked.get(‘page1’);

browser.restart

Como o nome sugere, ele irá reiniciar o navegador fechando a instância do navegador e criando uma nova. Ele também pode ser executado com o fluxo de controle ativado e desativado. O exemplo é dado abaixo para ambos os casos -

Example 1 - correndo browser.restart() com fluxo de controle habilitado -

browser.get(‘page1’);
browser.restart();
browser.get(‘page2’);

Example 2 - correndo browser.forkNewDriverInstance() com fluxo de controle desativado -

await browser.get(‘page1’);
await browser.restart();
await browser.get(‘page2’);

browser.restartSync

É semelhante à função browser.restart (). A única diferença é que ele retorna a nova instância do navegador diretamente, em vez de retornar uma promessa de resolução para a nova instância do navegador. Ele só pode ser executado quando o fluxo de controle está ativado.

Example - correndo browser.restartSync() com fluxo de controle habilitado -

browser.get(‘page1’);
browser.restartSync();
browser.get(‘page2’);

browser.useAllAngular2AppRoots

Como o nome sugere, ele é compatível apenas com Angular2. Ele pesquisará todos os aplicativos angulares disponíveis na página enquanto encontra elementos ou espera por estabilidade.

browser.waitForAngular

Esta função API do navegador instrui o WebDriver a aguardar até que o Angular termine a renderização e não tenha chamadas pendentes $ http ou $ timeout antes de continuar.

browser.findElement

Como o nome sugere, essa função de API do navegador espera que o Angular termine a renderização antes de pesquisar o elemento.

browser.isElementPresent

Como o nome sugere, esta função de API do navegador testará se o elemento está presente ou não na página.

browser.addMockModule

Ele adicionará um módulo para carregar antes do Angular sempre que o método Protractor.get for chamado.

Example

browser.addMockModule('modName', function() {
   angular.module('modName', []).value('foo', 'bar');
});

browser.clearMockModules

ao contrário de browser.addMockModule, ele limpará a lista de módulos simulados registrados.

browser.removeMockModule

Como o nome sugere, ele removerá módulos de simulação de registro. Exemplo: browser.removeMockModule ('modName');

browser.getRegisteredMockModules

Ao lado de browser.clearMockModule, ele obterá a lista de módulos simulados registrados.

browser.get

Podemos usar browser.get () para navegar no navegador para um endereço da web específico e carregar os módulos simulados para essa página antes do carregamento Angular.

Example

browser.get(url);
browser.get('http://localhost:3000'); 
// This will navigate to the localhost:3000 and will load mock module if needed

browser.refresh

Como o nome sugere, isso irá recarregar a página atual e carregar módulos de simulação antes do Angular.

browser.navigate

Como o nome sugere, ele é usado para misturar métodos de navegação de volta ao objeto de navegação para que sejam chamados como antes. Exemplo: driver.navigate (). Refresh ().

browser.setLocation

É usado para navegar para outra página usando a navegação in-page.

Example

browser.get('url/ABC');
browser.setLocation('DEF');
expect(browser.getCurrentUrl())
   .toBe('url/DEF');

Ele irá navegar da página ABC para a página DEF.

browser.debugger

Como o nome sugere, isso deve ser usado com a depuração do transferidor. Essa função basicamente adiciona uma tarefa ao fluxo de controle para pausar o teste e injetar funções auxiliares no navegador para que a depuração possa ser feita no console do navegador.

browser.pause

É usado para depurar testes WebDriver. Podemos usarbrowser.pause() em nosso teste para entrar no depurador do transferidor a partir desse ponto no fluxo de controle.

Example

element(by.id('foo')).click();
browser.pause();
// Execution will stop before the next click action.
element(by.id('bar')).click();

browser.controlFlowEnabled

É usado para determinar se o fluxo de controle está habilitado ou não.