O que é o Selenium ?
É um conjunto de ferramentas para automatizar tarefas através de navegadores da web.
A história começa em 2004 na ThoughtWorks em Chicago, com Jason Huggins construindo o modo Core como “JavaScriptTestRunner” para o teste de um aplicativo interno de Tempo e Despesas (Python, Plone). Testes automáticos de qualquer aplicativo são essenciais para o estilo da ThoughtWork, dadas as tendências ágeis desta consultoria. Ele tem a ajuda de Paul Gross e Jie Tina Wang. Para eles, este era um trabalho diário.
Ele utiliza algumas ferramentas para realizar as automações. Vamos apresentar as principais:
WebDriver
O WebDriver é um drive necessário para conduzir o navegador nativamente, como um usuário faria, seja localmente ou em uma máquina remota usando o servidor Selenium. Isso marca um avanço em termos de automação do navegador.
O Selenium WebDriver refere-se às ligações de linguagem e às implementações do código de controle do navegador individual. Isso é comumente referido como apenas WebDriver.
- Ele foi projetado como uma interface de programação simples e mais concisa.
- WebDriver é uma API compacta orientada a objetos.
- Ele dirige o navegador de forma eficaz.
O Selenium suporta a automação de todos os principais navegadores do mercado através do uso do WebDriver. Ele funciona como um protocolo que define uma interface de linguagem neutra para controlar o comportamento dos navegadores da web. Cada navegador é apoiado por uma implementação específica do WebDriver, chamada de driver. O driver é o componente responsável por delegar para o navegador e manipular a comunicação entre o Selenium e o navegador.
Essa separação faz parte de um esforço consciente para que os fornecedores de navegadores assumam a responsabilidade pela implementação de seus navegadores. A Selenium faz uso desses drivers de terceiros sempre que possível, mas também fornece drivers próprios mantidos pelo projeto para os casos em que isso não é uma realidade.
A estrutura une todas essas peças por meio de uma interface voltada para o usuário que permite que os diferentes back-ends do navegador sejam usados de forma transparente, permitindo automação entre navegadores e plataformas.
Sua configuração é bem diferente da configuração de outras ferramentas comerciais. Antes de começar a escrever o código do Selenium, você precisa instalar as bibliotecas de ligações de idioma para o idioma de sua escolha, o navegador que deseja usar e o driver desse navegador.
- Primeiro passo para usar o Selenium WebDriver
Se você deseja começar com uma ferramenta de baixo código/gravação e reprodução, verifique a linguagem, IDE e o navegador de sua prefência. O selenium possui o Selenium IDE, disponível para download nas extensões do Chrome.
Em nosso exemplo, utilizamos como:
Linguagem de programação: Python
IDE: Jupyter Notebook
Navegador: Chrome
- Configurando a biblioteca para sua linguagem de programação favorita
Primeiro você precisa instalar as ligações Selenium para seu projeto de automação. O processo de instalação das bibliotecas depende do idioma escolhido. Certifique-se de verificar a página de downloads do Selenium para certificar-se de que está usando a versão mais recente.
Para instalar em seu dispositivo, execute o comando a seguir no terminal: pip install selenium
- Instalar drivers do navegador
É necessário configurar seu sistema para permitir que um navegador seja automatizado.
Através do WebDriver, suporta todos os principais navegadores do mercado, como Chrome/Chromium, Firefox, Internet Explorer, Edge, Opera e Safari. Sempre que possível, o WebDriver conduz o navegador usando o suporte integrado do navegador para automação.
Como todas as implementações de driver, exceto o Internet Explorer, são fornecidas pelos próprios fornecedores de navegadores, elas não são incluídas na distribuição padrão do Selenium.
Navegador | SO compatível | Mantido por | Download |
Chromium/Chrome | Windows/macOS/Linux | Downloads | |
Firefox | Windows/macOS/Linux | Mozilla | Downloads |
Edge | Windows/macOS | Microsoft | Downloads |
Internet Explorer | Windows | Selenium Project | Downloads |
Safari | macOS High Sierra and newer | Apple |
- Exemplo de código
Abra e feche um navegador com o Selenium
Exemplos de código para iniciar e interromper uma sessão com cada navegador.
Depois de ter uma biblioteca Selenium instalada e o driver de navegador desejado, você pode iniciar e interromper uma sessão com um navegador.
Normalmente, os navegadores são iniciados com opções específicas que descrevem quais recursos o navegador deve suportar e como o navegador deve se comportar durante a sessão. Alguns recursos são compartilhados por todos os navegadores e alguns serão específicos para o navegador que está sendo usado. Esta página mostrará exemplos de como iniciar um navegador com os recursos padrão.
Depois de aprender como iniciar uma sessão, confira a próxima sessão sobre como escrever seu primeiro script Selenium
import selenium import time driver = webdriver.Chrome() url = driver.get('https://www.kabum.com.br/') driver.maximize_window() time.sleep(2) barra_Pesquisa = driver.find_element_by_xpath('//*[@id="input-busca"]') barra_Pesquisa.click() barra_Pesquisa.send_keys('Processador') botao_Enter = driver.find_element_by_xpath('//*[@id="barraBuscaKabum"]/div/form/button') botao_Enter.click()
Selenium IDE
O Selenium IDE é uma extensão do navegador que grava e reproduz as ações de um usuário.
O Ambiente de Desenvolvimento Integrado do Selenium ( Selenium IDE ) é uma extensão de navegador fácil de usar que registra as ações de um usuário no navegador usando comandos existentes do Selenium, com parâmetros definidos pelo contexto de cada elemento. Ele fornece uma excelente maneira de aprender a sintaxe do Selenium. Está disponível para Google Chrome, Mozilla Firefox e Microsoft Edge.
Para obter mais informações, visite a documentação completa do Selenium IDE.
Para obter mais informações, visite a documentação completa do Selenium IDE.
Selenium Grid 4
Quer executar testes em paralelo em várias máquinas? Então, o Grid é para você.
O Selenium Grid permite a execução de scripts WebDriver em máquinas remotas (virtuais ou reais) por meio de comandos de roteamento enviados pelo cliente para instâncias remotas do navegador. Ele visa fornecer uma maneira fácil de executar testes em paralelo em várias máquinas.
Nos permite executar testes em paralelo em várias máquinas e gerenciar diferentes versões e configurações de navegador de forma centralizada (em vez de em cada teste individual).
Porém não é uma bala de prata. Ele resolve um subconjunto de problemas comuns de delegação e distribuição, mas, por exemplo, não gerencia sua infraestrutura e pode não atender às suas necessidades específicas.
Objetivos e principais funcionalidades
- Ponto de entrada central para todos os testes
- Gerenciamento e controle dos nós/ambiente onde os navegadores rodam
- Escala
- Executando testes em paralelo
- Teste multiplataforma
- Balanceamento de carga
O Grid 4 tira proveito de uma série de novas tecnologias para facilitar a escalabilidade e permitir a execução local.
O Selenium Grid 4 é uma implementação nova e não compartilha a base de código da versão anterior.
Depois de iniciar um Grid, existem basicamente duas maneiras de consultar seu status: por meio da Grid UI ou por meio de uma chamada de API.
A Grid UI pode ser acessada abrindo seu navegador preferido e indo para http://localhost:4444 .
As chamadas de API podem ser feitas por meio do endpoint http://localhost:4444/status ou usando o GraphQL.
O exemplo de GRID abaixo mostra a execução de 4 diferentes scripts e seus respectivos tempos de duração.
Linguagens mais utilizadas com o SELENIUM
Para criar scripts que interagem com o Selenium Server (Remote WebDriver) ou criar scripts locais do WebDriver, você precisa usar drivers de cliente específicos do idioma.
Embora existam ligações de linguagem para outras linguagens, essas são as principais que são suportadas pelo projeto principal hospedado no GitHub.
Apesar de ser amplamente aceito, trata-se de um projeto aberto, mantido por desenvolvedores que dedicam seu tempo a contribuir e facilitar as nossas vidas. Por causa disso, o framework está em constante aprimoramento, inclusive de correções sobre seus bugs. Na seção Links encontra-se a página que lista todas essas melhorias para que você possa, eventualmente, se guiar quando erros acontecerem nos seus projetos.
Referências:
https://selenium-python.readthedocs.io/
https://www.selenium.dev/documentation/webdriver/getting_started/install_library/
https://www.selenium.dev/documentation/grid/getting_started/