Si está utilizando el controlador web Selenium con Python, puede usar PyVirtualDisplay, un contenedor de Python para Xvfb y Xephyr.
PyVirtualDisplay necesita Xvfb como dependencia. En Ubuntu, primero instale Xvfb:
sudo apt-get install xvfb
luego instale PyVirtualDisplay desde Pypi:
pip install pyvirtualdisplay
Ejemplo de secuencia de comandos Selenium en Python en modo sin cabeza con PyVirtualDisplay:
#!/usr/bin/env python
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=0, size=(800, 600))
display.start()
# now Firefox will run in a virtual display.
# you will not see the browser.
browser = webdriver.Firefox()
browser.get('http://www.google.com')
print browser.title
browser.quit()
display.stop()
EDITAR
La respuesta inicial se publicó en 2014 y ahora estamos en la cúspide de 2018. Como todo lo demás, los navegadores también han avanzado. Chrome tiene ahora una versión completamente sin cabeza que elimina la necesidad de usar bibliotecas de terceros para ocultar la ventana de la interfaz de usuario. El código de muestra es el siguiente:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
CHROME_PATH = '/usr/bin/google-chrome'
CHROMEDRIVER_PATH = '/usr/bin/chromedriver'
WINDOW_SIZE = "1920,1080"
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--window-size=%s" % WINDOW_SIZE)
chrome_options.binary_location = CHROME_PATH
driver = webdriver.Chrome(executable_path=CHROMEDRIVER_PATH,
chrome_options=chrome_options
)
driver.get("https://www.google.com")
driver.get_screenshot_as_file("capture.png")
driver.close()
driver = webdriver.Firefox()
su código, siga mi respuesta aquí: stackoverflow.com/a/23898148/1515819