firefox - Navegador sin cabeza real
browser webkit (4)
Echa un vistazo a WebKitDriver . El proyecto incluye la implementación sin cabeza de WebKit.
Estoy a cargo de probar una aplicación web empresarial que hace un uso intensivo de AJAX. Necesito construir un sistema que permita la ejecución continua de pruebas sin intervención humana. Actualmente estoy más interesado en las pruebas de carga, pero quiero que los mismos scripts utilizados para generar la carga se utilicen en las pruebas funcionales.
Actualmente para loadtesting estoy usando el grinder . Registramos los scripts y luego los procesamos para manejar, entre otras cosas, las solicitudes asíncronas. Este sistema funciona por ahora; sin embargo, los scripts son delicados y no puedo mantenerlos durante nuestro ciclo de desarrollo. Necesito poder ''ejecutar un navegador'' a través de un lenguaje de programación que abstrae los detalles de html y javascript, pero debe ser sin cabeza. En otras palabras, si mi script de prueba se rompe, debe representar una ruptura real de la aplicación. La ejecución de firefox en xvfb no funciona, ya que Firefox aún utiliza demasiados recursos incluso en una máquina linux sin cabeza que se ejecuta con xvfb . Intenté manejar Firefox con webdriver bajo el servidor x sin cabeza.
Llevo días trabajando en HTMLUnit desde que esta es la solución ideal. He estado escribiendo controladores HTMLUnit en Jython y, por lo tanto, puedo usarlos con el molinillo. Desafortunadamente, me estoy encontrando con errores de javascript (que no son errores reales en firefox / chrome / IE) y creo que estoy al final del camino para esto. En cualquier caso, conozco bien HTMLUnit y realmente necesito una alternativa.
Sé que hay otras soluciones ( envjs y zombie.js ); sin embargo, no sé qué tan desarrolladas están estas tecnologías y no quiero perder otra semana yendo a un callejón sin salida.
¿Qué tan difícil sería tomar el código fuente de Firefox o Webkit y comentar todas las llamadas de representación / GUI y crear un navegador sin cabeza real? ¿Se ha hecho esto? ¿Sería más fácil hacer esto con otro? Sinceramente, no puedo entender por qué esto no se ha hecho ya, así que supongo que es mucho más difícil de lo que estoy anticipando.
Supongo que si puedo obtener un navegador realmente sin cabeza con características de rendimiento razonables (tengo una gran flota de servidores para solucionar este problema, pero no es lo suficientemente grande para Firefox real con la representación de GUI), entonces lo configuraré.
Echa un vistazo a LoadBooster . Es un servicio de prueba de carga basado en la nube que utiliza el navegador sin cabeza PhantomJS para probar sitios web. Descargo de responsabilidad: trabajo para LoadBooster .
Es posible que pueda aprovechar algunas de las herramientas de prueba de unidades de JavaScript disponibles para ensamblar el tipo de entorno que necesita.
Por ejemplo, he encontrado que cargar envjs en rhino proporciona un navegador falso aceptable para probar la mayoría de JavaScript. Se queda corto en ciertos atributos de DOM, como elementos con un tamaño relativo a su ventana, pero eso no ha sido un problema grave en mi experiencia.
Ver también:
Esto ha sido hecho por los chicos en http://www.phantomjs.org/ . En sus propias palabras:
PhantomJS es un WebKit sin cabeza con API de JavaScript. Tiene soporte rápido y nativo para varios estándares web: manejo de DOM, selector de CSS, JSON, Canvas y SVG.
PhantomJS es una solución óptima para pruebas sin problemas de aplicaciones basadas en web, raspado de sitios, captura de páginas, renderizador SVG, convertidor de PDF y muchos otros casos de uso.
PhantomJS es creado por Ariya Hidayat