python - org - selenium os
¿Es posible ocultar el navegador en Selenium RC? (11)
Estoy usando Selenium RC para automatizar algunas operaciones del navegador, pero quiero que el navegador sea invisible. es posible? ¿Cómo? ¿Qué pasa con Selenium Grid? ¿Puedo ocultar la ventana de Selenium RC también?
+1 para Selenium RC como un servicio de Windows.
Para que las pruebas se ejecuten completamente ocultas, creo que no tienes muchas soluciones si estás en Windows.
Lo que haría sería dedicar una computadora en su LAN para estar en línea todo el tiempo y tener un servidor RC de selenio funcionando. Entonces usa la IP de esa computadora en lugar de localhost para ejecutar sus pruebas. Por ejemplo:
browser = selenium("10.15.12.34",4444,"*firefox","http://saucelabs.com")
(teniendo en cuenta que esa es la ip de la computadora que ejecuta el servidor).
Con esa configuración, ejecuta las pruebas en su computadora, los navegadores y la ventana del servidor RC están en otra computadora y la vuelve a la suya una vez que lo haya hecho.
Así es como corro mis pruebas con maven en un escritorio de Linux (Ubuntu). Me cansé de no poder trabajar con el controlador de web de firefox, siempre enfocándome.
Instalé xvfb
xvfb-run -a mvn clean install
Eso es
En Linux, puede ejecutar WebDriver en una pantalla sin cabeza (virtual) para ocultar el navegador. Esto se puede hacer con Xvfb (X framebuffer virtual).
Puede controlar Xvfb directamente desde el código de Python usando xvfbwrapper
: https://github.com/cgoldberg/xvfbwrapper
El código de Python para ejecutar sin cabeza se vería así:
from selenium import webdriver
from xvfbwrapper import Xvfb
display = Xvfb()
display.start()
# now Firefox will run in a virtual display.
# you will not see the browser.
driver = webdriver.Firefox()
driver.get(''http://www.google.com'')
print(driver.title)
driver.quit()
display.stop()
Instalar dependencias en Debian / Ubuntu:
$ sudo apt-get install xvfb
$ pip install xvfbwrapper
En Linux, puede ejecutar su navegador de prueba en una pantalla virtual. Necesitará el paquete xvfb
para crear un servidor X virtual. En las distribuciones basadas en Debian, solo ejecute
sudo apt-get install xvfb
Hay una bonita herramienta ephemeral-x.sh
que configurará convenientemente cualquier comando para ejecutar en la pantalla virtual. Descárguelo y hágalo ejecutable:
wget https://raw.github.com/jordansissel/xdotool/master/t/ephemeral-x.sh
chmod +x ephemeral-x.sh
Entonces, simplemente puede usarlo para iniciar el servidor de Selenium:
./ephemeral-x.sh java -jar selenium-standalone.jar
Todas las ventanas del navegador creadas por Selenium ahora usarán la pantalla virtual y serán invisibles para usted.
En MacOSX, no he podido ocultar la ventana del navegador, pero al menos descubrí cómo moverla a una pantalla diferente para que no interrumpa tanto mi flujo de trabajo. Mientras Firefox está ejecutando pruebas, solo haga clic con el botón derecho en su ícono en el dock, seleccione Opciones y Asignar a Pantalla 2.
En muchos casos, PhantomJS no se ajustará completamente a tus necesidades, me gustaría detallar la opción de Chrome sin cabeza que se menciona en la respuesta de Dave Hunt.
Chrome 57 acaba de lanzar esta característica. Puede usarlo pasando el indicador sin cabeza a través de ChromeDriver, para obtener más información, vea la discusión en esta pregunta
Existe un proyecto relacionado con PhantomJS llamado GhostDriver , que está destinado a ejecutar instancias de PhantomJS en una Grilla de Selenio utilizando el protocolo JSON de alambrado de webdriver. Eso es probablemente lo que está buscando, aunque esta pregunta ya tiene 4 años.
Hay algunas opciones:
Puede usar Selenium Grid para que el navegador se abra en una máquina (o máquina virtual) completamente diferente a la que puede conectarse a través de VNC o Conexión a Escritorio remoto si desea ver el navegador. Además, otra opción: si ejecuta un proceso en primer plano de Jenkins en ese servidor remoto, puede ejecutar su proyecto de prueba en el escritorio.
Puede ejecutar Selenium ''sin cabeza'' en Linux en XVFB. Nunca he intentado hacer esto y dudo que realmente valga la pena el esfuerzo. http://www.alittlemadness.com/2008/03/05/running-selenium-headless/
Puede envolver Selenium RC en un servicio de Windows. http://support.microsoft.com/kb/137890 . Excepto que las restricciones de permisos en las versiones posteriores de Windows probablemente evitarán que Selenium acceda al escritorio como lo hizo Windows 2000 para permitirnos.
Otra opción sería utilizar algo como WebDriver HTMLUnitDriver, que no ejecuta un navegador ''real''. http://code.google.com/p/webdriver/ . También hay una opción PhantomJS, así como un "Chrome sin cabeza" que podrías usar.
Por supuesto, también existe la opción de utilizar un servicio como SauceLabs, donde puede hacer que sus pruebas se ejecuten en la nube. Después de que tus pruebas se hayan completado, puedes ver un video de ellas corriendo.
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.
Si está en Windows, una opción es ejecutar las pruebas en una cuenta de usuario diferente . Esto significa que el navegador y el servidor de Java no serán visibles para su propia cuenta.
curl -k https://gist.githubusercontent.com/terrancesnyder/995250/raw/cdd1f52353bb614a5a016c2e8e77a2afb718f3c3/ephemeral-x.sh -o ~/ephemeral-x.sh
chmod +x ~/ephemeral-x.sh
~/ephemeral-x.sh TestsStarterCommand
Por cierto, esta es una característica que necesita cualquier desarrollador que ejecute e2e que lógicamente generará navegadores. En un entorno de desarrollo, resulta molesto ocuparse de la ventana que sigue apareciendo y de la que puede interactuar accidentalmente haciendo que falle la prueba.