Formulário de contato

Nome

E-mail *

Mensagem *

Imagem

Corrigindo erro do Selenium ao usar Chrome sem interface gráfica

Corrigindo erro do Selenium ao usar Chrome sem interface gráfica

Publicado por em

@CanalQb Corrigindo erro ozone_platform_x11 com Selenium no Linux
@CanalQb

Como resolver o erro ozone_platform_x11 ao usar Selenium sem GUI

Ao executar scripts do Selenium com o driver do Chrome em ambientes Linux sem interface gráfica, é comum se deparar com mensagens de erro como:

[ozone_platform_x11.cc(238)] Missing X server or $DISPLAY

Esse problema ocorre porque o Chrome tenta abrir uma janela gráfica para execução, mas o sistema não possui um servidor X ou ambiente gráfico ativo.

Entendendo o que causa o erro

O servidor X é o sistema responsável pela renderização gráfica em sistemas Unix/Linux. Em servidores ou ambientes headless (sem interface gráfica), ele normalmente não está disponível.

O Chrome, ao ser executado via Selenium, procura automaticamente essa variável $DISPLAY para tentar abrir a interface, e ao não encontrar, retorna esse erro relacionado à plataforma gráfica do X11.

Como contornar o erro em Python com Selenium

Para contornar esse problema sem instalar interfaces gráficas completas, você pode definir a variável de ambiente DISPLAY para um valor inválido ou utilizar o modo headless do Chrome. Veja abaixo duas abordagens possíveis.

1. Usando DISPLAY inválido para evitar tentativa de renderização

Este método força o Selenium a não tentar abrir a interface gráfica:

import os
from selenium import webdriver

# Define DISPLAY com valor inválido
os.environ['DISPLAY'] = ':0.0.invalid'

# Inicia o driver do Chrome
driver = webdriver.Chrome()

# Executa as ações desejadas
# driver.get('https://example.com')

driver.quit()

2. Recomendado: utilizar modo headless do Chrome

A melhor prática é usar o modo headless, que é suportado oficialmente pelo Chrome e ideal para servidores:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")

driver = webdriver.Chrome(options=chrome_options)

# driver.get('https://example.com')

driver.quit()

Alternativas e recomendações de compatibilidade

Ao utilizar ambientes sem interface gráfica, considere estas práticas:

  • Utilize modo headless sempre que possível.
  • Evite scripts que exigem interação com modais ou elementos gráficos interativos, pois podem falhar.
  • Verifique o uso de ferramentas como Selenium WebDriver e ChromeDriver compatíveis com o modo headless.

Importante sobre execução automatizada

Aviso: Antes de automatizar interações com sites, revise os Termos de Uso da plataforma. Evite violar regras de uso ou causar sobrecarga no servidor. O conteúdo deste post é informativo e educativo.

Conclusão

Executar automações em servidores Linux sem ambiente gráfico é totalmente viável com o uso de Selenium e o modo headless do navegador Chrome. Isso permite que tarefas como scraping, testes automatizados ou interações com páginas web ocorram de forma eficiente e sem complicações relacionadas ao servidor X.

Se deseja ver esses exemplos funcionando na prática, visite o canal @CanalQb.

Marcadores: Blogger IA Python Script Sistemas Tutorial

© abril 15, 2023 CanalQb — Python, Scripts, Automação, Airdrops e Criptomoedas | Web3 e Tech na Prática

Comentários