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

Comentários
Comente só assim vamos crescer juntos!