Casperjs / PhantomJS vs Selenio


Estamos usando Selenium para automatizar nuestras pruebas UI. Recientemente hemos visto a la mayoría de nuestros usuarios usando Chrome. Así que queríamos saber-pros y contras de usar PhantomJS vs Selenium:

  • ¿Hay alguna ventaja real en términos de rendimiento, por ejemplo, el tiempo necesario para ejecutar los casos de prueba?
  • ¿Cuándo se debe preferir PhantomJS sobre Selenio?
Author: Mark, 2012-12-31

5 answers

Están atacando diferentes problemas. Dado que PhantomJS se ejecuta perfectamente en la línea de comandos, es adecuado como la primera capa de pruebas de humo, ya sea como parte del flujo de trabajo de desarrollo y/o en un servidor de integración continua. Selenium se dirige a múltiples navegadores y, por lo tanto, es muy útil para garantizar la consistencia entre navegadores y llevar a cabo pruebas exhaustivas en diferentes sistemas operativos.

Si su aplicación web necesita ejecutarse en una variedad de navegadores web, ejecute la interfaz de usuario probar solo con PhantomJS no producirá la mayor cobertura de prueba. Sin embargo, está perfectamente bien lanzar PhantomJS y ejercer algunas comprobaciones básicas de cordura antes de hacer las pruebas en profundidad. Imagine la locura de probar una aplicación de finanzas donde la pantalla de inicio de sesión se rompe involuntariamente y no funciona!

Tenga en cuenta que la línea entre los dos se vuelve ligeramente borrosa con el soporte WebDriver reciente en los últimos PhantomJS. Ahora es posible ejecutar rápidamente las pruebas primero usando PhantomJS y luego (suponiendo que no se encuentre ningún error grave) continúan ejecutando las mismas pruebas a fondo en una configuración de Selenium.

 175
Author: Ariya Hidayat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-31 10:38:16

Con la reciente integración de WebDriver (como Ariya ha señalado), ahora puede usar Selenium para conducir PhantomJS.

Esto es inmensamente poderoso.

Puede ejecutar un conjunto de pruebas de Selenium completamente automatizadas (usando PhantomJS como implementación de WebDriver) a través de su CI en un servidor Unix sin cabeza en cada check-in. Luego, si desea probar la compatibilidad del navegador, puede ejecutar sus pruebas localmente cambiando la implementación de WebDriver subyacente a Chrome, Firefox, etc.

 49
Author: mekondelta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-16 12:06:54

Actualmente estoy escribiendo un framework de extracción web. Tengo 524 pruebas que obtienen datos de 250 sitios web usando XPath. Inicialmente el framework usaba un analizador HTML, HTMLCleaner, pero actualmente estoy investigando el uso de Selenium porque quiero soporte para Javascript. He ejecutado las pruebas contra los controladores HtmlUnit, Chrome, Firefox y PhantomJS. Aquí hay una comparación del tiempo necesario y el número de fallos para cada enfoque:

                    Failures    Time (secs) 
HtmlCleaner         0           82  
HtmlUnit            169         102 
Google Chrome       38          562 
Firefox             46          1159    
PhantomJS           40          575

Algunos observaciones:

  • En algunos casos, los "fallos" pueden no ser fallos en absoluto, puede ser que los extractores están fallando porque Javascript está reescribiendo el DOM. Estoy en el proceso de analizar los fracasos para encontrar la causa.

  • Dicho esto, HtmlUnit es el controlador de Selenium más rápido, pero también es poco fiable. Esta falta de fiabilidad no solo se refiere a Javascript, hay problemas de procesamiento" desordenado, sucio, del mundo real " HTML porque algo parece estar roto en el algoritmo de equilibrio de etiquetas. Se han planteado un par de cuestiones al respecto, pero no se han solucionado - ver HTML-UNIDAD 1423 y HTML-UNIDAD 1046.

  • Firefox es el controlador Selenium más lento, a pesar de que estoy deshabilitando la carga de imágenes y las hojas de estilo. Esto se debe a que es el más lento para cargar e inicializar, por lo que es considerablemente más lento que Chrome, y cada vez que falla una extracción necesito recargar el controlador (en las pruebas creo un grupo de 5 controladores para mitigar los retrasos en la recuperación de URL para todos los controladores web de Selenium).

  • PhantomJS logra una mejor precisión que Firefox, ligeramente inferior a Chrome, pero en alrededor de la mitad del tiempo de Firefox. Lo que es más, puedo ejecutarlo en mi caja de desarrollo, no "toma el control de mi máquina" mediante el lanzamiento de múltiples navegadores para que pueda seguir adelante con el trabajo.

Recomiendo encarecidamente PhantomJS.

 41
Author: Mark Butler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-23 05:33:41

Aprovechando el Poder de Selenium y PhantomJS PhantomJS tiene las capacidades del navegador sin cabeza, por lo tanto, es bueno usarlo como uno de los navegadores con selenium (además de los navegadores tradicionales como IE, Chrome, etc.,) Ventajas de este enfoque:

  1. Se puede utilizar para hacer Cordura para aplicaciones web en CI (Aunque las máquinas del agente no tengan IE o chrome) las pruebas corre con eficacia.
  2. Algunos equipos de desarrollo usan esto enfoque para obtener resultados rápidos y consume menos cantidad de tiempo y recursos.
  3. La mayor característica de phantom JS es la captura de pantalla, ejecutando pruebas paralelas usando multi threading, lo que reducirá enormemente el tiempo de ejecución.
 2
Author: Muthu ragavendra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-11 06:13:08

Desafíos que enfrenté al usar PhantomJS:

Mi aplicación estaba tasando la aplicación web:

  1. En algún momento los localizadores que estaban funcionando bien en el navegador Chrome no están funcionando en PhantomJS.
  2. A veces, mientras se realiza doble clic o clic de contexto por selenium Tengo que poner una comprobación adicional para verificar las operaciones coz en primer lugar no está haciendo clic.
  3. Caché y persistencia de cookies. Después de cerrar sesión y luego iniciar sesión en los datos permanecer en caché. / Así que realizamos la prueba en Chrome.
  4. Uno de los problemas más importantes que encontré "Problema de carga de archivos". No podemos cargar un archivo en PhantomJS browser en nuestra aplicación. Hemos intentado muchas cosas javascriptexcutor, jqueries pero ninguno de ellos funcionó en absoluto. Así que también realizamos esta prueba en Chrome. Nota: Utilizamos funciones javascript extensivamente en nuestro framework para interactuar con web element for PhantomJS. Una cosa es segura que el tiempo de ejecución es muy menor en PhantomJS. Así que depende de la prioridad del cliente si quiere Funcionalidad / Rendimiento entonces ve con él. Si desea probar el escenario de extremo a extremo, vaya a Chrome.
 1
Author: Vaibhav_Sharma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-28 12:00:33