Olá, Raphael. Como vai?
Esse erro NoSuchDriverException é muito comum quando estamos migrando testes do Selenium que rodam perfeitamente na nossa máquina local para um ambiente de Integração Contínua (CI) como o Jenkins.
O que está acontecendo é que o Selenium Manager (a ferramenta interna do Selenium que tenta baixar o driver automaticamente) não está conseguindo localizar, baixar ou executar o binário do Google Chrome dentro do servidor onde o Jenkins está rodando.
Para resolver esse problema no seu pipeline, precisamos ajustar o seu código Python para rodar em modo Headless (sem interface gráfica) e garantir que o Jenkins tenha o ambiente correto. Veja o passo a passo para solucionar o bug:
1. Configurar o Chrome Options para Modo Headless
Servidores de Jenkins geralmente operam em ambientes Linux baseados em texto (sem monitor/interface gráfica). Se você tentar abrir o Chrome da forma tradicional, o Selenium vai quebrar porque ele não encontra uma tela para renderizar o navegador.
No seu arquivo tests/test_home.py, ajuste a inicialização do seu WebDriver adicionando os argumentos necessários para rodar em segundo plano:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def iniciar_driver():
chrome_options = Options()
# Linhas fundamentais para ambientes de CI (Jenkins):
chrome_options.add_argument("--headless=new") # Roda o Chrome sem interface gráfica
chrome_options.add_argument("--no-sandbox") # Ignora o modelo de segurança sandbox (obrigatório para o Jenkins)
chrome_options.add_argument("--disable-dev-shm-usage") # Evita problemas de falta de memória compartilhada
driver = webdriver.Chrome(options=chrome_options)
return driver
2. Verificar a Instalação do Navegador no Servidor Jenkins
O Selenium Manager automatiza o download do Chromedriver (o motor de testes), mas ele ainda depende que o navegador Google Chrome real esteja fisicamente instalado na máquina onde o agente do Jenkins está executando.
Se o seu Jenkins roda direto na sua máquina local ou em uma máquina virtual dedicada, certifique-se de que o Chrome está instalado nela. Se o seu Jenkins roda dentro de um container Docker, a imagem utilizada no seu Jenkinsfile precisa ter o Google Chrome instalado. Uma alternativa comum no Jenkinsfile é garantir a instalação antes de rodar os testes:
stage('Instalar Dependências do Sistema') {
steps {
// Exemplo para servidores baseados em Debian/Ubuntu
sh 'sudo apt-get update && sudo apt-get install -y google-chrome-stable'
}
}
3. Atualizar as Dependências no requirements.txt
As versões mais antigas do Selenium sofriam bastante com incompatibilidades no Selenium Manager. Garanta que você está utilizando a versão mais recente do Selenium no repositório do seu projeto para que ele consiga buscar os drivers atualizados da API do Google.
Tente aplicar a configuração das Options em modo headless no seu arquivo de testes e faça um novo commit para disparar o pipeline do Jenkins. O erro deve desaparecer!
Espero que possa ter lhe ajudado!