Este blog é um complemento do nosso canal no YouTube. Clique em @CanalQb para seguir e acompanhar nossos vídeos!

Sugestões de pesquisas

Ubuntu e Selenium Grid: Configuração e Automação Remota com Python

#SeleniumGrid; #AutomaçãoPython; #Ubuntu
@CanalQb 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:

@CanalQb

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).

@CanalQb

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!

إرسال تعليق

Comente só assim vamos crescer juntos!
CanalQb mais próximo Quer falar com o CanalQb?
Em que posso te ajudar?
Fale comigo