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

Sugestões de pesquisas

Python Selenium: Script para encontrar portas livres para ChromeDriver

#python; #selenium; #chromedriver
@CanalQb

Python - Selenium: Script para localizar portas livres para ChromeDriver

Canal Qb

Para automatizar múltiplas instâncias do ChromeDriver com Selenium, é importante garantir que cada uma utilize uma porta livre para evitar conflitos. Abaixo, apresentamos um script em Python que encontra uma porta livre disponível no sistema, utilizando a biblioteca socket.

Função para encontrar porta livre

import socket

def find_free_port():
    """
    Encontra uma porta livre para uso do ChromeDriver.
    """
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind(('localhost', 0))  # Solicita ao SO uma porta livre
    port = s.getsockname()[1]
    s.close()
    return port

# Exemplo de uso
port = find_free_port()
print(f"A porta livre encontrada é {port}")

Essa função cria um socket temporário e pede ao sistema uma porta livre. O sistema escolhe uma porta disponível automaticamente (ao passar 0 no bind). Após recuperar o número da porta, o socket é fechado e o valor retornado pode ser usado para iniciar uma nova instância do ChromeDriver.

Utilizando a função com Selenium

Veja abaixo um exemplo completo demonstrando como usar a função find_free_port para criar uma instância do ChromeDriver em uma porta livre, configurando opções para execução headless e outras melhorias:

from selenium import webdriver
import socket

def find_free_port():
    """
    Encontra uma porta livre para uso do ChromeDriver.
    """
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind(('localhost', 0))
    port = s.getsockname()[1]
    s.close()
    return port

# Configura as opções do ChromeDriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--disable-extensions")
chrome_options.add_argument("--headless")  # Executa o navegador sem interface gráfica
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--no-sandbox")

# Encontra uma porta livre
port = find_free_port()

# Cria uma nova instância do ChromeDriver na porta livre encontrada
driver = webdriver.Chrome(options=chrome_options, port=port)

# Use o driver para navegar na web...
driver.get("https://www.google.com")
print(driver.title)

# Encerra o ChromeDriver
driver.quit()

Esse método garante que cada instância do ChromeDriver utilize uma porta exclusiva, evitando erros de conflito quando várias instâncias rodam simultaneamente.

Considerações finais

  • Para múltiplas instâncias (exemplo: 20 ou mais), basta chamar a função find_free_port() para cada criação de driver, garantindo portas distintas.
  • Certifique-se de que a versão do ChromeDriver seja compatível com a versão do Google Chrome instalada.
  • Este método é recomendado para ambientes que executam testes automatizados em paralelo ou aplicações que necessitam abrir múltiplas janelas do navegador.

Para mais detalhes sobre o Selenium e o ChromeDriver, consulte o site oficial do Selenium e do ChromeDriver.

إرسال تعليق

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