|
Python com Selenium e subprocess para controlar o Chromium |
|
| @CanalQb | ||
A combinação de Python com a biblioteca Selenium é uma ferramenta poderosa para automação de navegadores. Quando usada em conjunto com subprocess, essa técnica permite controle ainda mais preciso de instâncias do navegador Chromium. Isso é útil para testes automatizados, scraping, execução de bots e ambientes de desenvolvimento com múltiplas sessões.
Controlando múltiplas instâncias do Chromium
Uma abordagem interessante consiste em abrir manualmente o Chromium com um diretório de perfil exclusivo via subprocess.Popen e, depois, conectar essa instância com o Selenium WebDriver. Veja como isso pode ser feito:
Script 1 – Primeira instância do Chromium
import subprocess
from selenium import webdriver
# Iniciar a primeira instância do Chromium
chromium1 = subprocess.Popen([
"/usr/lib/chromium-browser/chromium-browser",
"--user-data-dir=/tmp/chromium-browser1"
])
# Configurar o WebDriver para essa instância
options = webdriver.ChromeOptions()
options.add_argument("--user-data-dir=/tmp/chromium-browser1")
driver1 = webdriver.Chrome(options=options)
# Abrir a página desejada
driver1.get("https://www.exemplo1.com")
# Encerrar as instâncias após o uso
driver1.quit()
chromium1.kill()
Script 2 – Segunda instância do Chromium
import subprocess
from selenium import webdriver
# Iniciar a segunda instância do Chromium
chromium2 = subprocess.Popen([
"/usr/lib/chromium-browser/chromium-browser",
"--user-data-dir=/tmp/chromium-browser2"
])
# Configurar o WebDriver com o segundo perfil
options = webdriver.ChromeOptions()
options.add_argument("--user-data-dir=/tmp/chromium-browser2")
driver2 = webdriver.Chrome(options=options)
# Carregar uma segunda página
driver2.get("https://www.exemplo2.com")
# Encerrar o processo após o uso
driver2.quit()
chromium2.kill()
Explicação do funcionamento
Cada script abre uma nova instância do Chromium com uma pasta de dados de usuário exclusiva, utilizando o argumento --user-data-dir. Isso garante que as sessões e cookies não se misturem entre as janelas. Em seguida, o webdriver.Chrome() é configurado para usar o mesmo diretório, o que faz com que ele assuma controle daquela instância específica.
Esse método também pode ser útil em servidores onde o controle de várias sessões isoladas é necessário — por exemplo, em aplicações de automação para tarefas repetitivas, login simultâneo em contas diferentes ou testes automatizados em paralelo.
Considerações importantes
- O caminho
/usr/lib/chromium-browser/chromium-browserpode variar conforme a instalação. Usewhich chromium-browserno terminal para confirmar o caminho correto no seu sistema. - Para rodar em modo invisível (sem abrir janelas), adicione
--headlessàs opções doChromeOptions. - Verifique se você tem o ChromeDriver instalado e compatível com a versão do Chromium.
Exemplo com headless e múltiplas sessões
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("--headless")
options.add_argument("--user-data-dir=/tmp/session3")
driver = webdriver.Chrome(options=options)
driver.get("https://www.example.com")
print(driver.title)
driver.quit()
Conclusão
Com essas técnicas, é possível montar uma infraestrutura de automação robusta, controlando múltiplas sessões do Chromium de forma isolada e eficiente. Essa prática é especialmente útil para desenvolvedores, analistas e profissionais de automação que precisam lidar com diversas tarefas simultâneas no navegador.
Quer aprofundar seus conhecimentos? Visite o canal @CanalQb para mais tutoriais e exemplos práticos.

Comentários
Comente só assim vamos crescer juntos!