![]() |
Ubuntu - Rodando Script com Selenium Grid | |
@CanalQb |
Introdução à Automação Remota com Selenium Grid
Fala galera! Estou tentando rodar o Selenium para clicar o captcha em outro PC de forma remota, para executar uma automação em um servidor. O desafio é justamente conseguir essa configuração.
Durante minhas pesquisas, encontrei o Selenium Server, também conhecido como Selenium Grid. Tentei diversas abordagens sem sucesso até encontrar uma configuração inicial que funcionou. Agora vou compartilhar esse conhecimento com vocês.
Versões e Compatibilidade
No momento do vídeo, o Selenium Server está na versão selenium-server-4.9.0.jar, mas não obtive resultados satisfatórios com ele, pois utilizo WebDriver e Chrome na versão 113. É fundamental que tanto o servidor quanto o cliente estejam com as versões compatíveis.
Preparando o Script para o Servidor Linux
Supondo que seu ambiente esteja devidamente configurado, vamos criar o script em Python para o servidor (no meu caso, Linux). Veja o exemplo básico abaixo:
from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities capabilities = DesiredCapabilities.CHROME.copy() grid_url = "http://192.168.0.11:4444/wd/hub" driver = webdriver.Remote(command_executor=grid_url, desired_capabilities=capabilities) # Navegar para uma página de exemplo driver.get("https://bit.ly/3lOMxyx") driver.save_screenshot("screenshot.png") print(driver.title) driver.quit()
Explicação do Script
- Linha 1: Importa o Selenium.
- Linha 2: Define as capacidades desejadas para o navegador Chrome.
- Linha 3: URL do Selenium Grid no IP do cliente (192.168.0.11).
- Linha 4: Inicializa o driver remoto apontando para o servidor Selenium Grid.
- Linha 5: Abre a página especificada.
- Linha 6: Captura uma screenshot da página e salva localmente.
- Linha 7: Exibe o título da página no console.
- Linha 8: Fecha o navegador.
Pré-requisitos
Você precisará:
- Instalar o Python com Selenium instalado (pode ser feito via
pip install selenium
). - Ter o Java instalado para executar o Selenium Server. No momento, uso a versão 17 do Java SE, disponível no site oficial da Oracle: Oracle JDK 17.
- Baixar o arquivo JAR do Selenium Server. Para este tutorial, a versão 3.141.59 funcionou melhor (link oficial no GitHub: Selenium Server 3.141.59).
Importante: mantenha o chromedriver.exe
na mesma versão do seu navegador Chrome para evitar incompatibilidades.
Configurando o Hub e o Node
Agora, criaremos dois arquivos para rodar simultaneamente no cliente Windows:
Arquivo hub.bat
java -jar Z:\python\selenium\selenium-server-standalone-3.141.59.jar -role hub
Arquivo chrome.bat
java -Dwebdriver.chrome.driver="c:\Windows\System32\chromedriver.exe" -jar Z:\python\selenium\selenium-server-standalone-3.141.59.jar -role node -hub http://192.168.0.11:4444/grid/register/
Execute primeiro o hub.bat
. Ele deve exibir uma tela semelhante a esta:
Depois, acesse no navegador o link do console do grid, alterando o IP para o seu cliente: http://192.168.0.11:4444/grid/console.
Você verá a tela do hub do Selenium Grid, que mostra as configurações e nós registrados. Clique em View Config para detalhes.
Com o hub.bat
rodando, execute o chrome.bat
. A página do console deve atualizar mostrando os nós registrados, com sessões para Internet Explorer, Chrome e Firefox (por padrão são várias sessões, mas você pode configurar para usar apenas uma).
Detalhes da Configuração do Servidor Ubuntu
No meu caso, o servidor é um Ubuntu 18.04 Server sem interface gráfica, com Python 3.8.16, Chrome e ChromeDriver na versão 113. Os IPs estão fixos via roteador para garantir estabilidade:
- Servidor: 192.168.0.2
- Cliente: 192.168.0.11
Você pode fazer o mesmo configurando IP fixo nas configurações de rede do seu roteador ou dispositivo.
Script Atualizado para Execução
Segue um script Python atualizado e comentado para facilitar a compreensão e uso:
from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities # Configurar as capacidades desejadas para o navegador capabilities = DesiredCapabilities.CHROME.copy() # Endereço do servidor do Selenium Grid grid_url = "http://192.168.0.11:4444/wd/hub" # Inicializar o driver remoto driver = webdriver.Remote( command_executor=grid_url, desired_capabilities=capabilities ) # Navegar para uma página de exemplo driver.get("https://miningness.com/") driver.save_screenshot("screenshot.png") # Fazer algo com a página carregada... # Por exemplo, imprimir o título da página print(driver.title) # Fechar o driver driver.quit()
Considerações Finais
Este tutorial serve como ponto de partida para automações remotas usando Selenium Grid em ambientes heterogêneos (Windows cliente e Linux servidor). Lembre-se de manter as versões do navegador, WebDriver e Selenium Server alinhadas para evitar problemas.
Também recomendo fazer testes locais antes de migrar para servidores remotos, além de assegurar a segurança da rede onde as máquinas estão conectadas.
Responsabilidade: Sempre avalie cuidadosamente qualquer automação, especialmente em tarefas que envolvem interação com sistemas sensíveis, e evite investir recursos em processos que você não compreende completamente.
Para quem quiser mais detalhes, o site oficial do Selenium Grid é uma ótima fonte de informação.
Obrigado por acompanhar, e vou tentar trazer novidades para vocês em breve!