Arquitetura do Selenium Webdriver: a maioria dos iniciantes não sabe

Vamos começar com Tutorial de selênio Livro preto em uma abordagem exaustiva e diferente, neste primeiro segmento do tutorial do Selenium, discutiremos sobreArquitetura do Selenium Webdriver, O que é Selenium Webdriver, Visão geral do Selenium Webdriver, Breve História do Selenium, Vantagens do Selenium, limitações do Selenium, Componentes do Selenium e algumas perguntas mais frequentes.

O que é Selenium Webdriver

Selenium é uma tecnologia ou estrutura de código aberto através do qual podemos automatizar aplicativos baseados na Web. Selenium suporta testes de vários navegadores, vários idiomas como Java, Ruby, Perl, Python também são suportados. Ele suporta diferentes plataformas múltiplas como Windows, Linux, macOS etc. como parte da plataforma.

Breve História sobre Selênio:

O selênio foi inicialmente desenvolvido de uma ferramenta interna por Jason Huggins em 2004 em ThoughtWorks.

Mais tarde, no ano de 2007, Huggins se juntou à organização Google, e com outras como Jennifer Bevan, ele continuou com o projeto e desenvolvimento de uma das variações iniciais do Selenium, chamada Selênio RC. Durante um período semelhante, outra pessoa chamada Simon Stewart da ThoughtWorks desenvolveu ferramentas avançadas de automação de navegador da web como WebDriver. 

Em 2008, uma pessoa chamada Philippe Hanrigou da ThoughtWorks criou conceitos de automação remota conhecidos como “Selenium Grid”.

Em 2009, na Google Test Automation Conference, foi decidido fundir os dois projetos, e recebeu o nome de Selenium WebDriver, ou Selenium 2.0.

Vantagens do Selenium Webdriver:

A. Código aberto:

Selenium é uma estrutura / tecnologia de código aberto, portanto, um grande suporte da comunidade está disponível onde o escopo de desenvolvimento e melhoria é rápido e vasto, também como seu código aberto, você pode implementar qualquer recurso específico que você precisa como parte de seu trabalho e contribuir para o Open comunidade de origem. 

B. Multi linguagem de programação suportada:

Selenium é suportado por linguagens amplamente utilizadas; ele vem com diferentes vínculos de linguagem de programação, para que você possa escolher sua linguagem favorável para trabalhar com selênio de acordo com sua necessidade e experiência.

Selenium fornece suporte para as seguintes linguagens de programação: 

  • Java 
  • C#
  • Perl
  • python
  • Ruby  
  • Javascript

C. Independente de plataforma:

Selenium é independente de plataforma, então você pode automatizar seus aplicativos da web em qualquer plataforma e qualquer sistema operacional, ou seja, Windows, Linux, macOS etc.

D. Capacidade de teste entre navegadores

Selenium oferece suporte a recursos de teste em vários navegadores para seus aplicativos da web; você pode executar seu conjunto de testes escrito com Selenium em vários navegadores como Firefox, Chrome, IE, Safari etc.

E. Capacidade de teste entre dispositivos

Selenium Test Automation é usado para automação de teste de aplicativo da web móvel em vários dispositivos, como Android, IOS. 

F. Execução remota ou na nuvem:

Selenium GRID fornece o recurso para executar e controlar o script de teste de automação de seu aplicativo da web na nuvem, tornando um sistema como o nó mestre e outro sistema como o nó escravo, os nós escravos se conectam a um nó mestre e o nó mestre monitora o escravo nós, então seus testes estão em nós escravos diferentes com o sistema operacional diferente e navegadores diferentes, como Chrome, Firefox, Internet Explorer etc.

G. Capacidade de teste paralelo:

Com o Selenium, você pode obter recursos de teste paralelo automatizado, ou seja, pode executar seu script de teste ou casos de teste de automação em um navegador diferente ou no mesmo sistema operacional em paralelo. Esse recurso ajuda a obter menos tempo de execução para todo o conjunto de teste de automação que você tem, e também pode testar a viabilidade e compatibilidade de seu aplicativo da web com vários sistemas operacionais e navegadores em paralelo.   

H. Compatibilidade com múltiplos frameworks e ferramentas e tecnologias de terceiros

A estrutura do Selenium pode ser facilmente integrada com várias tecnologias e estruturas de terceiros, como diferentes estruturas de teste de unidade, ou seja, TesteNg, JUnit, MbUnit, Nunit etc. etc., diferentes ferramentas de compilação, como Ant, Maven, Gradle etc., ferramentas de integração contínua, ou seja, Jenkins, diferentes ferramentas de gerenciamento de teste, como Jira, testlink etc., várias ferramentas de relatório, como Allure, Extent Informe etc

I. Execução do navegador sem cabeça: 

O Selenium Webdriver suporta driver de navegador headless para execução de casos de teste, onde todos os seus casos de teste de automação são executados no modo de navegador headless, ou seja, nenhum navegador é aberto e a execução se torna extremamente rápida para que você possa concluir seus scripts de teste e a funcionalidade rapidamente em caso de liberação e validações urgentes.

Você pode basicamente usar htmlUnitdriver or motorista fantasma para a execução sem cabeça com Selênio.  

Desvantagens do selênio:

  • Suporte de aplicativo baseado nativo/janela, não presente: 
    • Selenium é usado para automatizar aplicativos Web Bade, mas não fornece suporte para aplicativos nativos ou aplicativos baseados em Windows.
  • Automação exaustiva baseada em imagem: 
    • Selenium não fornece suporte exaustivo para automatizar problemas ou aplicativos baseados em imagens, embora possamos usar algumas ferramentas de terceiros, como Sikuli, soluções baseadas em tesseract ocr que podem ser integradas com Selenium para fazer o trabalho relacionado às validações / operações de imagem ou extrações de dados de imagem e validações, eles também estão tendo algumas limitações, como você pode enfrentar problemas com testes paralelos, identificando documentos manuscritos e validando aqueles no processo de automatizar seu aplicativo, se houver tais casos de uso.
  • Integração com ferramentas de terceiros: 
    • Uma desvantagem da integração com várias ferramentas de terceiros com selênio é que seu script de automação pode ficar mais lento às vezes.
  • Estrutura de selênio Desenvolvimento:
    • Projetar e desenvolver uma estrutura de automação de teste avançada com Selenium requer muito conhecimento em selênio e não é muito simples construir uma estrutura de automação com várias ferramentas junto com Selenium.
  • Problemas específicos do navegador: 
    • Você pode enfrentar alguns problemas específicos do navegador ao trabalhar com o Selenium, especialmente com o IE; às vezes, você pode não ser capaz de lidar com ações da Web como clicar, enviar teclas, etc., e o navegador pode ficar morto. Portanto, você precisa ter conhecimento avançado para lidar com essas áreas enquanto automatiza o aplicativo construído no Bootstrap JS e executa-o no navegador IE.
    • Além disso, você pode enfrentar problemas de compatibilidade do navegador com as versões do Selenium Webdriver; você precisa se certificar de que está usando o Firefox, Chrome ou qualquer outro navegador compatível com a versão do Selenium Webdriver.
  • Sem suporte oficial: 
    • Como qualquer outra ferramenta de código aberto, selenium também é uma ferramenta de código aberto, o que significa que você não terá suporte oficial para seus problemas como qualquer ferramenta paga, embora haja um grande suporte da comunidade disponível, você pode trabalhar com eles com sua declaração de problema , mas isso pode consumir muito tempo.

Componentes de selênio: 

O selênio como ferramenta possui os componentes mencionados abaixo, que são: 

Selênio IDE:

  • Selenium IDE ou ambiente de desenvolvimento integrado Selenium é a versão mais inicial do Selenium para Web Application Automation.
  • Selenium IDE é um tipo de ferramenta de gravação e reprodução, que você pode usar como um plugin do navegador e gravar sua ação na web em seus aplicativos e que pode ser salvo como um script e posteriormente você pode executar o mesmo script gravado para executar e fazer validações.
  • Mas tem algumas limitações, como:
    • Você precisa executar o script gravado, modificar o script não é tão flexível ou nem você pode projetar seu caso de uso e scripts em sua própria abordagem independente.
    • A execução é muito lenta por natureza.
    • Suporta principalmente o Firefox, embora existam alguns ajustes que você pode fazer para executar o script gravado em outros navegadores, como o Google Chrome.
    • a execução paralela não é suportada.
    • O teste móvel não é suportado.
    • A geração de relatórios não é muito boa.
  • Na verdade, é uma versão muito preliminar do Selenium, usando isso você pode fazer uma automação de teste muito limitada para seus aplicativos da web.

Selênio RC

  • Selenium Remote Control é a próxima versão do Selenium e muitas vezes é referido como Selenium 1.0.

Como o Selenium RC funciona internamente:

O Selenium RC consiste em dois componentes principais, como o Selenium Server e o Selenium Client.

O Selenium Server inicia os navegadores e executa os comandos selenium que você escreveu como um script de automação de teste usando bibliotecas de cliente Selenium disponíveis em diferentes idiomas.

O Selenium Server converte os comandos / scripts de teste em algo chamado comandos Selenese e atua como um proxy HTTP.

O Selenium Server interage com o mecanismo do navegador da Web e executa a operação da Web que você está tentando automatizar como parte dos casos de teste para o aplicativo em teste.

Passos para usar o Selenium RC: 

  • Instale o servidor Selenium-RC.
    • Crie um projeto usando sua escolha de linguagem de programação e linguagem específica para o driver do navegador.
  • Instale o servidor selênio
    • Você pode configurar o Selenium Server simplesmente baixando o arquivo selenium-server.jar e executá-lo em seu sistema usando o comando abaixo: 
    • java -jar selenium-server.jar
  • Escreva o Script usando as bibliotecas do cliente Selenium e o mesmo usando o Selenium Server.

Limitações do Selenium RC:

  • No controle remoto Selenium, o driver de automação e o navegador tornam-se um pouco mais lentos porque o mecanismo do navegador não interage diretamente, em vez disso, o Selenium RC injeta javascript no mecanismo do navegador, também conhecido como Selenium Core.
  • O servidor que deve estar instalado e funcionando antes e durante a execução do script de teste.
  • As ações avançadas da Web não podem ser automatizadas e tratadas com o Selenium RC, como movimento do mouse, clique duplo, entrada do teclado, etc., etc., ao contrário do Selenium Webdriver.
  • Selenium RC não oferece suporte a testes de aplicativos móveis.
  • O Selenium RC depende do navegador real para executar o script de teste de automação e não oferece suporte a navegadores headless como HTMLUnitDriver ou GHostDriver etc., ao contrário do Selenium Webdriver.

Selênio WebDriver:

Selenium Webdriver é a versão avançada entre os componentes Selenium que é muito robusta e também suporta a versão avançada de interações da Web e também não interage com o navegador via Javascript ao contrário do Selenium RC e tem o suporte para teste de aplicativos móveis. É muitas vezes referido como parte do Selenium 2.0.

O WebDriver pode lidar com elementos dinâmicos e também suporta a execução paralela com vários navegadores diferentes.

Teremos uma discussão detalhada nos próximos segmentos.

Selênio GRID: 

Selenium GRID é outro componente do Selenium por meio do qual você pode ter a execução remota de seu script de teste de automação criando nós mestre-escravo. Selenium GRID oferece suporte a testes paralelos no mesmo navegador, bem como em vários navegadores. 

Teremos uma discussão mais aprofundada sobre o Selenium GRID nas próximas seções.

WebDriver 3.0

O Selenium 3.0 é a versão mais recente dos componentes do Selenium, que é basicamente a combinação do WebDriver 2.0 e a evolução do GRID 3.

Neste próximo segmento, estamos prestes a discutir o Arquitetura do Selenium WebDriver em detalhese, eventualmente, retrata como o Selenium funciona internamente,.

Arquitetura do Selenium Webdriver  :

Existem cinco atributos ou componentes principais como parte da arquitetura do Selenium Webdriver: 

    

  • Selenium Client Library ou Selenium-Programming language bindings
  • Protocolo WebDriver ou protocolo JSON Wire sobre HTTP
  • Drivers do navegador
  • Browser Engine
  • Motor de renderização do navegador
Arquitetura do Selenium Webdriver
Selenium Tutorial-Selenium Webdriver arquitetura

Bibliotecas de cliente Selenium ou ligações de linguagem de programação: 

Selenium fornece vinculação de linguagem diferente, ou seja, as bibliotecas de cliente para oferecer suporte a várias linguagens diferentes como parte do seu script de teste de desenvolvimento e automação de automação. Por exemplo, Selenium com C #, Selenium com Java, Selenium com Python etc.

Protocolo WebDriver ou PROTOCOLO JSON WIRE:

JSON, que basicamente significa JavaScript Object Notation. Esse protocolo também é conhecido como protocolo WebDriver, usado para transferência de dados servidor-cliente pela web. Cada driver do navegador (por exemplo, FirefoxDriver, ChromeDriver etc.) tem seu próprio servidor HTTP e usa esse protocolo para transferir dados via Rest Webservices na forma de solicitação HTTP e resposta HTTP.

 Drivers de navegador:

Cada navegador possui seu próprio driver de navegador. Os drivers do navegador estabelecem comunicação com o respectivo navegador por meio do mecanismo do navegador. 

Quando o script de automação é executado, ele se comunica diretamente com os drivers do navegador e, eventualmente, com o respectivo navegador. A solicitação e a resposta são transferidas por meio de solicitação HTTP e resposta HTTP.

Mecanismo de navegadores:

Cada navegador tem seu próprio mecanismo de navegador; O mecanismo do navegador funciona basicamente como uma camada intermediária entre a IU e o mecanismo de renderização.

Mecanismo de renderização do navegador: 

O mecanismo de renderização do navegador é responsável por exibir o documento solicitado, renderizando os elementos específicos necessários para a solicitação-resposta e os dados.

Arquitetura do Selenium Webdriver e funcionalidade de trabalho em poucas palavras :

Selenium-WebDriver invoca o navegador diretamente usando o suporte nativo de cada navegador para automação e seu mecanismo JavaScript. A maneira como essas chamadas estão sendo feitas e os recursos que elas suportam dependem do navegador que você está usando.

Ele não injeta JavaScript como Selenium-RC quando o navegador é carregado.

A seguinte incidência ocorre durante a execução do script Webdriver:

  •  Fazemos o script de automação usando qualquer ligação de linguagem (Java/C# etc.), e ele aciona a API WebDriver enquanto o script está em execução.
  •   O script e eventualmente comandos (por exemplo, driver.findElement (By.id (“idName”))) são sendo convertido para JavaScript internamente.
  •   Usando o Browser Engine, é novamente convertido de volta para JSON, que é uma espécie de par de valor-chave.
  •   Após obter o respectivo valor da respectiva chave, identifica os respectivos WebElements e executa as respectivas ações do usuário (como clicar, enviar chaves, etc.).
  •   Toda a comunicação é feita através de um JSON-Wire ou chamada de protocolo Webdriver, e as comunicações acontecem por HTTP na forma de API Rest como uma solicitação HTTP e uma resposta HTTP.

Perguntas frequentes sobre selênio: 

Quais são os tipos de APIs do WebDriver disponíveis no Selenium?

Selenium Webdriver é uma interface e tem diferentes vínculos de linguagem para diferentes linguagens de programação, como Java, C #, python etc., 

O Selenium Webdriver tem principalmente duas variantes diferentes, como: 

  • Driver da Web Selenium local.
  • Driver Web Selenium Remoto. 

O driver da Web Selenium Local usa a API para trabalhar com a vinculação de linguagem específica, e você pode trabalhar com eles com sua execução local, enquanto, por outro lado, se quiser executar seus scripts de teste de automação em Remote, então você precisa usar o APIs remotas do driver da Web Selenium.

Explique Quais são os cenários que não podemos automatizar usando o Selenium?

O Selenium não fornece uma maneira de automatizar as áreas abaixo de aspectos do aplicativo, que são: 

  • Teste de desempenho do aplicativo
  • Teste de segurança dos aplicativos.
  • Processamento e automação baseados em imagem
  • Automação baseada em Captcha.
  • Cenários de streaming de vídeo.
  • Aplicativo nativo ou aplicativos baseados em janela.
  • Aplicativos de streaming

Diferença entre Selenium 2.0 e Selenium 3.0?

  • Para Selenium 2.0, o requisito mínimo é Java 1.7, por outro lado, para Selenium 3.0, a versão Java mínima necessária é 1.8
  • Selenium 3.0 requer GeckOdriver para Firefox versão acima de 47, mas este não é o caso do Selenium 2.0 
  • Selenium 3.0 suporta navegador moderno como Edge, Safari etc. mas por outro lado para Selenium 2.0, driver de navegador para Mozilla, Chromedriver, IE que é desenvolvido por desenvolvedores de Selenium.
  • No Selenium 3, o suporte para testes de automação móvel foi removido, ou seja, AndroidDriver e iPhoneDriver, e você tem que usar ferramentas como Appium para testes de automação móvel, o que não é o caso do Selenium 2.0.
  • O Selenium 3.0 não suporta o driver Headless, ou seja, HTMLUnitWebDriver, mas o Selenium 2.0 tem suporte para execução Headless, ou seja, com HTMLUnitDriver ou ghostdriver.
  • No Selenium 3, o Selenium WebDriver tornou-se o padrão W3C; por outro lado, o Selenium Webdriver no Selenium 2.0 não pertence ao padrão W3C.

Conclusão : Com isso, completamos o primeiro segmento de Livro negro do tutorial do Selênio cobertura O que é Selenium, Selenium Webdriver Arquitetura, visão geral do Selenium, Prós e contras do Selenium, No próximo segmento de Tutorial de selênio módulo 2 discutiremos sobre a instalação do Selenium, ou seja, configuração, comandos do Selenium e outros tópicos básicos, intermediários e avançados do Selenium

Deixe um comentário