Tipos de Configuração
WebdriverIO pode ser usado para diversos propósitos. Ele implementa a API do protocolo WebDriver e pode executar um navegador de forma automatizada. O framework foi projetado para funcionar em qualquer ambiente arbitrário e para qualquer tipo de tarefa. É independente de frameworks de terceiros e requer apenas Node.js para ser executado.
Vinculações de Protocolo
Para interações básicas com o WebDriver e outros protocolos de automação, o WebdriverIO usa suas próprias vinculações de protocolo baseadas no pacote NPM webdriver
:
- WebDriver
- Chrome DevTools
loading...
loading...
Todos os comandos de protocolo retornam a resposta bruta do driver de automação. O pacote é muito leve e não há lógica inteligente como auto-waits para simplificar a interação com o uso do protocolo.
Os comandos de protocolo aplicados à instância dependem da resposta da sessão inicial do driver. Por exemplo, se a resposta indica que uma sessão móvel foi iniciada, o pacote aplica todos os comandos do protocolo Appium e Mobile JSON Wire ao protótipo da instância.
Você pode executar o mesmo conjunto de comandos (exceto os móveis) usando o protocolo Chrome DevTools ao importar o pacote NPM devtools
. Ele tem a mesma interface que o pacote webdriver
, mas executa sua automação baseada em Puppeteer.
Para mais informações sobre essas interfaces de pacotes, veja Modules API.
Modo Standalone
Para simplificar a interação com o protocolo WebDriver, o pacote webdriverio
implementa uma variedade de comandos em cima do protocolo (por exemplo, o comando dragAndDrop
) e conceitos centrais como seletores inteligentes ou auto-waits. O exemplo acima pode ser simplificado assim:
loading...
Usar o WebdriverIO no modo standalone ainda dá acesso a todos os comandos de protocolo, mas fornece um superconjunto de comandos adicionais que proporcionam uma interação de nível superior com o navegador. Ele permite que você integre essa ferramenta de automação em seu próprio projeto (de teste) para criar uma nova biblioteca de automação. Exemplos populares incluem Oxygen ou CodeceptJS. Você também pode escrever scripts Node simples para extrair conteúdo da web (ou qualquer outra coisa que exija um navegador em execução).
Se nenhuma opção específica for definida, o WebdriverIO sempre tentará baixar e configurar o driver de navegador que corresponde à propriedade browserName
em suas capabilities. No caso do Chrome e Firefox, ele também pode instalá-los dependendo se consegue encontrar o navegador correspondente na máquina.
Para mais informações sobre as interfaces do pacote webdriverio
, veja Modules API.
O Testrunner WDIO
O principal objetivo do WebdriverIO, no entanto, é realizar testes end-to-end em larga escala. Por isso, implementamos um test runner que ajuda a construir uma suíte de testes confiável, fácil de ler e manter.
O test runner cuida de muitos problemas que são comuns ao trabalhar com bibliotecas de automação simples. Por um lado, ele organiza suas execuções de teste e divide as especificações de teste para que seus testes possam ser executados com máxima concorrência. Ele também gerencia sessões e fornece muitos recursos para ajudar a depurar problemas e encontrar erros em seus testes.
Aqui está o mesmo exemplo de cima, escrito como uma especificação de teste e executado pelo WDIO:
loading...
O test runner é uma abstração de frameworks de teste populares como Mocha, Jasmine ou Cucumber. Para executar seus testes usando o test runner WDIO, consulte a seção Primeiros Passos para mais informações.
Para mais informações sobre a interface do pacote testrunner @wdio/cli
, veja Modules API.