O que é Selenium e por que Python?
O Selenium é uma ferramenta de código aberto amplamente utilizada para automação de testes de aplicações web. Ele permite simular a interação de um usuário com o navegador, automatizando tarefas como cliques, preenchimento de formulários e validação de elementos. Sua versatilidade e compatibilidade com diversas linguagens de programação o tornam uma escolha popular para equipes de qa e desenvolvimento.
Python, por outro lado, é uma linguagem de programação conhecida por sua sintaxe clara, facilidade de aprendizado e vasta biblioteca de módulos. A combinação de Selenium com Python oferece uma solução poderosa para automação de testes, permitindo que você escreva testes legíveis, mantenha o código de forma eficiente e execute testes de forma rápida e confiável.
A escolha de Python para automação de testes com Selenium oferece diversas vantagens:
- Simplicidade: A sintaxe clara e concisa de Python facilita a escrita e manutenção de testes automatizados.
- Legibilidade: O código Python é altamente legível, o que facilita a colaboração entre membros da equipe.
- Vasta Biblioteca: Python oferece uma ampla gama de bibliotecas que podem ser utilizadas para auxiliar na automação de testes, como
pytest
, unittest
e csv
.
- Comunidade Ativa: A comunidade Python é grande e ativa, o que significa que você pode encontrar suporte e recursos online facilmente.
- Integração: Python se integra facilmente com outras ferramentas e frameworks utilizados em projetos de desenvolvimento de software.
Configuração do Ambiente de Desenvolvimento
Antes de começar a escrever seus testes automatizados com Selenium e Python, é crucial configurar o ambiente de desenvolvimento corretamente. Siga os passos abaixo para preparar seu ambiente:
-
Instalação do Python:
- Verifique se o Python está instalado em seu sistema. Abra o terminal ou Prompt de comando e execute o seguinte comando:
python --version
ou python3 --version
.
- Se o Python não estiver instalado, faça o download da versão mais recente no site oficial: https://www.python.org/downloads/.
- Durante a instalação, certifique-se de marcar a opção "Add Python to PATH" para que o Python seja reconhecido globalmente.
-
Instalação do pip:
- O
pip
é um gerenciador de pacotes para Python, utilizado para instalar e gerenciar bibliotecas e dependências.
- Verifique se o
pip
está instalado executando o seguinte comando no terminal: pip --version
ou pip3 --version
.
- Se o
pip
não estiver instalado, você pode instalá-lo executando o script get-pip.py
. Faça o download do script em https://bootstrap.pypa.io/get-pip.py e execute-o com o seguinte comando: python get-pip.py
.
-
Instalação do Selenium:
- Após configurar o Python e o
pip
, instale o Selenium executando o seguinte comando no terminal: pip install selenium
ou pip3 install selenium
.
- Este comando irá baixar e instalar a biblioteca Selenium em seu ambiente Python.
-
Instalação do WebDriver:
- O WebDriver é um componente que permite que o Selenium interaja com o navegador. Você precisa instalar o WebDriver correspondente ao navegador que você deseja automatizar (Chrome, Firefox, Edge, etc.).
- Chrome:
- Faça o download do ChromeDriver no site oficial: https://chromedriver.chromium.org/downloads.
- Certifique-se de baixar a versão do ChromeDriver compatível com a versão do seu navegador Chrome.
- Extraia o arquivo baixado e adicione o diretório do ChromeDriver ao seu PATH.
- Firefox:
- Faça o download do GeckoDriver no site oficial: https://github.com/mozilla/geckodriver/releases.
- Certifique-se de baixar a versão do GeckoDriver compatível com a versão do seu navegador Firefox.
- Extraia o arquivo baixado e adicione o diretório do GeckoDriver ao seu PATH.
- Edge:
- Safari:
- O SafariDriver já vem integrado ao macOS. Certifique-se de que a opção "Enable Remote Automation" está habilitada nas configurações do Safari (Develop > Enable Remote Automation).
-
Verificação da Instalação:
- Após instalar todos os componentes, verifique se o Selenium está funcionando corretamente executando um teste simples. Crie um arquivo Python (
teste_selenium.py
) com o seguinte código:
from selenium import webdriver
driver = webdriver.Chrome() # ou webdriver.Firefox(), webdriver.Edge(), webdriver.Safari()
driver.get("https://www.google.com")
print(driver.title)
driver.quit()
* Execute o arquivo no terminal: `python teste_selenium.py` ou `python3 teste_selenium.py`.
* Se o teste for executado com sucesso, o título da página do Google será exibido no terminal e o navegador será fechado automaticamente.
Ao seguir estes passos, você terá um ambiente de desenvolvimento configurado e pronto para criar seus testes automatizados com Selenium e Python.
Inicialização do WebDriver
A inicialização do WebDriver é o primeiro passo para interagir com o navegador através do Selenium. Este processo envolve a criação de uma instância do WebDriver, que atuará como a ponte entre seu código Python e o navegador. Vamos explorar como inicializar o WebDriver para diferentes navegadores:
from selenium import webdriver
driver = webdriver.Chrome(executable_path="/path/to/chromedriver")
* Substitua `/path/to/chromedriver` pelo caminho real para o arquivo ChromeDriver.
from selenium import webdriver
driver = webdriver.Firefox(executable_path="/path/to/geckodriver")
* Substitua `/path/to/geckodriver` pelo caminho real para o arquivo GeckoDriver.
from selenium import webdriver
driver = webdriver.Edge(executable_path="/path/to/msedgedriver")
* Substitua `/path/to/msedgedriver` pelo caminho real para o arquivo MSEdgeDriver.
from selenium import webdriver
driver = webdriver.Safari()
* Para o Safari, não é necessário especificar o caminho para o driver, pois ele já está integrado ao sistema.
Após inicializar o WebDriver, você pode utilizar seus métodos para interagir com o navegador. Por exemplo, você pode utilizar o método get()
para abrir uma página web:
driver.get("https://www.example.com")
Este comando irá abrir a página https://www.example.com
no navegador. Lembre-se de sempre fechar o navegador após a execução dos seus testes utilizando o método quit()
:
driver.quit()
Este comando irá fechar todas as janelas do navegador e encerrar a sessão do WebDriver. A escolha do navegador dependerá dos requisitos do seu projeto e das plataformas que você precisa suportar.

Localização de Elementos na Página Web
Um dos aspectos mais importantes da automação de testes com Selenium é a capacidade de localizar elementos na página web. O Selenium oferece diversos métodos para localizar elementos, permitindo que você interaja com elementos específicos, como botões, campos de texto, links e imagens.
Os métodos de localização mais comuns incluem:
from selenium.webdriver.common.by import By
element = driver.find_element(By.ID, "meuElemento")
element = driver.find_element(By.NAME, "meuCampo")
element = driver.find_element(By.CLASS_NAME, "botaoPrincipal")
element = driver.find_element(By.TAG_NAME, "h1")
element = driver.find_element(By.LINK_TEXT, "Clique aqui")
element = driver.find_element(By.PARTIAL_LINK_TEXT, "Clique")
element = driver.find_element(By.CSS_SELECTOR, "div.container > p.texto")
element = driver.find_element(By.XPATH, "//div[@class='container']/p[@class='texto']")
Além destes métodos, o Selenium também oferece os métodos find_elements()
(plural) para retornar uma lista de elementos que correspondem aos critérios de busca. A escolha do método de localização dependerá da estrutura da página web e da unicidade dos atributos dos elementos. É recomendado utilizar atributos únicos, como id
, sempre que possível, para garantir a robustez dos seus testes.

Interagindo com Elementos da Página
Após localizar os elementos na página web, o próximo passo é interagir com eles. O Selenium oferece diversos métodos para simular as ações de um usuário, como clicar em botões, preencher campos de texto, selecionar opções em listas suspensas e muito mais.
Algumas das interações mais comuns incluem:
-
click()
- Simula um clique do mouse em um elemento.
botao = driver.find_element(By.ID, "meuBotao")
botao.click()
-
send_keys("texto")
- Envia uma sequência de caracteres para um campo de texto.
campo = driver.find_element(By.ID, "meuCampo")
campo.send_keys("Olá, Selenium!")
-
clear()
- Limpa o conteúdo de um campo de texto.
campo = driver.find_element(By.ID, "meuCampo")
campo.clear()
formulario = driver.find_element(By.ID, "meuFormulario")
formulario.submit()
from selenium.webdriver.support.ui import Select
lista = driver.find_element(By.ID, "minhaLista")
select = Select(lista)
select.select_by_visible_text("Opção 1")
select_by_index(index)
- Seleciona uma opção em uma lista suspensa pelo seu índice.
from selenium.webdriver.support.ui import Select
lista = driver.find_element(By.ID, "minhaLista")
select = Select(lista)
select.select_by_index(0) # Seleciona a primeira opção
-
select_by_value("value")
- Seleciona uma opção em uma lista suspensa pelo seu valor.
from selenium.webdriver.support.ui import Select
lista = driver.find_element(By.ID, "minhaLista")
select = Select(lista)
select.select_by_value("valor1")
Além destas interações, o Selenium permite manipular atributos de elementos, executar JavaScript na página e muito mais. Ao combinar a localização de elementos com as interações apropriadas, você pode automatizar uma ampla gama de cenários de teste.

Frameworks de Teste: Pytest e Unittest
Embora o Selenium forneça as ferramentas para interagir com o navegador, é recomendado utilizar um framework de teste para organizar e executar seus testes de forma eficiente. Python oferece diversos frameworks de teste, sendo os mais populares o Pytest e o Unittest.
-
Pytest:
- Pytest é um framework de teste poderoso e flexível, conhecido por sua sintaxe simples e facilidade de uso.
- Para utilizar o Pytest, você precisa instalá-lo:
pip install pytest
ou pip3 install pytest
.
- O Pytest detecta automaticamente os testes em seus arquivos Python, buscando por funções ou classes que começam com
test_
.
- Exemplo de um teste com Pytest:
import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
@pytest.fixture
def driver():
driver = webdriver.Chrome()
yield driver
driver.quit()
def test_login(driver):
driver.get("https://www.example.com/login")
driver.find_element(By.ID, "username").send_keys("usuario")
driver.find_element(By.ID, "password").send_keys("senha")
driver.find_element(By.ID, "login").click()
assert "Bem-vindo" in driver.page_source
* Para executar os testes, basta executar o comando `pytest` no terminal.
-
Unittest:
- Unittest é o framework de teste padrão do Python, inspirado no JUnit do Java.
- Para utilizar o Unittest, você precisa criar classes que herdam de
unittest.TestCase
e definir métodos de teste que começam com test_
.
- Exemplo de um teste com Unittest:
import unittest
from selenium import webdriver
from selenium.webdriver.common.by import By
class TestLogin(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
def tearDown(self):
self.driver.quit()
def test_login(self):
self.driver.get("https://www.example.com/login")
self.driver.find_element(By.ID, "username").send_keys("usuario")
self.driver.find_element(By.ID, "password").send_keys("senha")
self.driver.find_element(By.ID, "login").click()
self.assertTrue("Bem-vindo" in self.driver.page_source)
if __name__ == '__main__':
unittest.main()
* Para executar os testes, basta executar o arquivo Python no terminal: `python teste_unittest.py` ou `python3 teste_unittest.py`.
Ambos os frameworks oferecem funcionalidades para organizar testes, executar testes em paralelo, gerar relatórios e muito mais. A escolha do framework dependerá das suas preferências e dos requisitos do seu projeto.