mac chromedriver bindings ubuntu selenium webdriver

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.



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.



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.