ubuntu - chromedriver - ¿Es posible ejecutar el controlador web de selenio(Firefox) sin una GUI?
selenium linux (8)
Estamos considerando actualizar nuestro servidor de producción de Ubuntu Desktop 10.04 a UbuntuServer 12.04.
Tenemos varios servicios que se ejecutan en nuestro sistema operativo de escritorio actual, como Selenium Web Driver. Mi pregunta es: ¿Se puede ejecutar Selenium Web Driver desde un sistema basado en cli?
Mi primer pensamiento es que no puede, porque depende de Firefox, pero me gustaría que alguien me pruebe mal.
ACTUALIZACIÓN: Ya no necesita XVFB para ejecutar Firefox. Firefox v55 en Linux y Firefox v56 en Windows / Mac ahora es compatible con la ejecución sin cabeza.
Agregué un poco de documentación de uso aquí:
https://developer.mozilla.org/en-US/Firefox/Headless_mode#Selenium_in_Java
Lo que estás buscando es un headless-browser .
Sí, es posible ejecutar Selenium en Firefox sin cabeza. Aquí hay una post que puedes seguir.
Estos son los pasos resumidos para configurar Xvfb
#install Xvfb
sudo apt-get install xvfb
#set display number to :99
Xvfb :99 -ac &
export DISPLAY=:99
#you are now having an X display by Xvfb
Me las arreglé fácilmente para ocultar la ventana del navegador.
Simplemente instale PhantomJS . Luego, cambia esta línea:
driver = webdriver.Firefox()
a:
driver = webdriver.PhantomJS()
No será necesario cambiar el resto del código y no se abrirá ningún navegador. Para fines de depuración, use driver.save_screenshot(''screen.png'')
en diferentes pasos de su código o simplemente siga usando Firefox webdriver en desarrollo.
Otra opción es GhostDriver que ahora es oficialmente compatible con WebDriver: ganancia de rendimiento real de Ghostdriver
Sí. Puede usar HTMLUnitDriver
en HTMLUnitDriver
lugar para FirefoxDriver
al iniciar webdriver. Esta es la configuración del navegador sin cabeza. Los detalles se pueden encontrar here .
Si quieres soporte de navegador sin cabeza, entonces hay otro enfoque que puedes adoptar.
https://github.com/detro/ghostdriver
Se anunció durante la Conferencia de Selenio y todavía está en desarrollo. Utiliza PhantomJS como navegador y es mucho mejor que HTMLUnitDriver, todavía no hay capturas de pantalla, pero todavía está en desarrollo activo.
Tenga en cuenta que HtmlUnitDriver webclient tiene un único subproceso y Ghostdriver solo tiene el 40% de las funcionalidades para ser un WebDriver.
No obstante, Ghostdriver se ejecuta correctamente para las pruebas y tengo problemas para conectarlo al concentrador WebDriver.
Una opción es usar pyvirtualdisplay
esta manera:
from pyvirtualdisplay import Display
display = Display(visible=0, size=[800, 600])
display.start()
#do selenium job here
display.close()
Una versión más corta es:
with Display() as display:
# selenium job here
Esto es generalmente un encapsulado de python de xvfb
, y más conveniente de alguna manera.
Por cierto, aunque PhantomJS
es un navegador sin cabeza y no se abrirá ninguna ventana si lo usas, parece que PhantomJS
todavía necesita un entorno de interfaz PhantomJS
usuario para funcionar.
PhantomJS()
código de error -6 cuando uso PhantomJS()
lugar de Firefox()
en modo sin cabeza (consola conectada a masilla). Sin embargo, todo está bien en el entorno de escritorio.