org openqa official library selenium htmlunit automated-tests

openqa - Selenium vs HtmlUnit?



selenium official documentation (4)

Al ejecutar las pruebas de Jenkins durante la noche, normalmente no tiene acceso a un sistema de ventanas como X11 o Windows para ejecutar el navegador web. Por lo tanto, veo una ventaja de usar el controlador web HTMLUnit en ese caso, ya que no requiere acceso a un sistema de ventanas.

Estoy intentando comprender mejor el marco de prueba y he estado investigando el Selenio. He usado HTMLUnit antes, principalmente cuando necesitaba eliminar algo de información del sitio web o de "me gusta".

En el contexto de escribir pruebas de automatización, ¿cuál es la ventaja / desventajas de Selenium versus HTMLUnit? Me parece que Selenium es más complicado de configurar que HTMLUnit, aunque al mismo tiempo hay un HTMLUnitDriver para Selenium que creo que se comporta de la misma manera que en HTMLUnit.

Selenium obviamente proporciona un marco más robusto, tiene Selenium RC para pruebas pararel, también tiene diferentes controladores de navegador que se pueden usar, aunque cuando usas los controladores del navegador, la prueba realmente abre / cierra una aplicación de navegador en lugar de sin cabeza.

Puede ser que no estoy entendiendo el Selenio correctamente. ¡Algunas indicaciones y punteros serían geniales!

En otra nota, una pregunta aparte, también estoy buscando hacer pruebas automáticas en el navegador móvil, veo que Selenium tiene un IPhoneDriver de IPhoneDriver para ello, pero esta tampoco es una prueba sin cabeza, ya que requiere un simulador de iOS real.

¿Hay alguna forma de hacer pruebas sin cabeza en los sitios móviles? ¿Sería suficiente cambiar el agente de usuario? He visto un par de publicaciones sobre cambio de usuario-agente que parecen tener sus propios desafíos, por ej. Establecer usuario-agente en Selenium RC

¡Muchas gracias!



Selenium y HTMLUnit son algo similares en concepto, pero el Selenio es más maduro / robusto y tiene muchas más características.

Tenga en cuenta que Selenium incluye el complemento de grabación (IDE) para Firefox, que le permite grabar pruebas y el marco de automatización de RC / WebDriver que esencialmente maneja un navegador. Los dos se pueden usar juntos para hacer la creación de prueba muy fácil.

La única ventaja que pude obtener al usar HTMLUnit es que requiere menos recursos, por lo que podría ejecutar pruebas con menos hardware, pero con el soporte paralelo de Selenium, incluso eso ya no es cierto.


bueno, trataría de explicar las diferencias en detalle.

Hablando de pruebas paralelas, es mejor usar rejilla de selenio. Concepto básico de selenio RC y rejilla de selenio. Puede obtener más detalles here

Algunas palabras sobre selenium webDriver :

La nueva característica principal en Selenium 2.0 es la integración de la API de WebDriver. WebDriver está diseñado para proporcionar una interfaz de programación más simple y concisa junto con algunas limitaciones en la API de Selenium-RC. Selenium-WebDriver se desarrolló para admitir mejor las páginas web dinámicas donde los elementos de una página pueden cambiar sin que la página se vuelva a cargar. El objetivo de WebDriver es proporcionar una API orientada a objetos bien diseñada que brinde un soporte mejorado para los modernos problemas avanzados de prueba de aplicaciones web.

¿Cómo maneja WebDriver el navegador en comparación con Selenium-RC?

Selenium-WebDriver realiza llamadas directas al navegador utilizando el soporte nativo de cada navegador para la automatización. La forma en que se realizan estas llamadas directas y las características que admiten depende del navegador que está utilizando. La información sobre cada ''controlador de navegador'' se proporciona más adelante en este capítulo. Para aquellos familiarizados con Selenium-RC, esto es bastante diferente de lo que está acostumbrado. Selenium-RC funciona de la misma manera para cada navegador compatible. Inyectó funciones de JavaScript en el navegador cuando el navegador fue cargado y luego usó su javascript para conducir el AUT dentro del navegador. WebDriver no usa esta técnica. Nuevamente, maneja el navegador directamente usando el soporte incorporado del navegador para la automatización.

WebDriver y Selenium-Server

Puede o no necesitar el Servidor de Selenio, dependiendo de cómo pretenda utilizar Selenium-WebDriver. Si solo usará la API de WebDriver, no necesita el Servidor Selenium. Si su navegador y todas las pruebas se ejecutarán en la misma máquina, y sus pruebas solo usan la API de WebDriver, entonces no necesita ejecutar el Servidor Selenium; WebDriver ejecutará el navegador directamente. Sin embargo, existen algunas razones para usar el servidor Selenium con Selenium-WebDriver.

  • Está utilizando Selenium-Grid para distribuir sus pruebas en varias máquinas o máquinas virtuales (VM).
  • Desea conectarse a una máquina remota que tiene una versión de navegador particular que no está en su máquina actual.
  • No está utilizando los enlaces de Java (es decir, Python, C # o Ruby) y le gustaría usar HtmlUnit Driver

Drivers de Selenium-WebDriver WebDriver es el nombre de la interfaz clave con la que se deben escribir las pruebas, pero hay varias implementaciones. Éstas incluyen:

HtmlUnit Driver Esta es actualmente la implementación más rápida y ligera de WebDriver. Como su nombre indica, esto se basa en HtmlUnit. HtmlUnit es una implementación basada en Java de un WebBrowser sin una GUI. Para cualquier enlace de idioma (que no sea java), se requiere que el Servidor Selenium utilice este controlador.

Pros

  • La implementación más rápida de WebDriver
  • Una solución pura de Java, por lo que es independiente de la plataforma.
  • Admite JavaScript

Contras

  • Emula el comportamiento de JavaScript de otros navegadores (ver a continuación)

JavaScript en el controlador HtmlUnit Ninguno de los navegadores populares usa el motor de JavaScript utilizado por HtmlUnit (Rhino). Si prueba JavaScript usando HtmlUnit, los resultados pueden diferir significativamente de esos navegadores. Cuando decimos "JavaScript" en realidad queremos decir "JavaScript y el DOM". Aunque el DOM está definido por el W3C, cada navegador tiene sus propias peculiaridades y diferencias en la implementación del DOM y en cómo interactúa JavaScript con él. HtmlUnit tiene una implementación impresionantemente completa del DOM y tiene un buen soporte para usar JavaScript, pero no es diferente de cualquier otro navegador: tiene sus propios caprichos y diferencias tanto del estándar W3C como de las implementaciones DOM de los principales navegadores, a pesar de su capacidad de imitar a otros navegadores. Con WebDriver, tuvimos que hacer una elección; ¿Permitimos las capacidades de JavaScript de HtmlUnit y corremos el riesgo de que los equipos se encuentren con problemas que solo se manifiestan allí, o dejamos JavaScript desactivado, sabiendo que hay cada vez más sitios que dependen de JavaScript? Tomamos el enfoque conservador, y de forma predeterminada hemos deshabilitado la compatibilidad cuando utilizamos HtmlUnit. Con cada versión de WebDriver y HtmlUnit, volvemos a evaluar esta decisión: esperamos habilitar JavaScript de forma predeterminada en la HtmlUnit en algún momento.

Para investigar más a fondo sobre la configuración de webDriver, vea this

De la HTMLUnit : HtmlUnit no es un marco de prueba genérico de unidades. Es específicamente una forma de simular un navegador para fines de prueba y está destinado a ser utilizado en otro marco de prueba como JUnit o TestNG.

Así que para concluir Selenium y HtmlUnit diferencia : HtmlUnit es una implementación basada en Java de un WebBrowser sin una GUI y una forma de simular un navegador para fines de prueba y Selenium-WebDriver realiza llamadas directas al navegador utilizando la compatibilidad nativa de cada navegador para la automatización. podemos ver que HtmlUnit proporciona API sin posibilidad de GUI para la automatización, mientras que WebDriver ofrece posibilidades de automatización para los navegadores internos.

Hablando de automatización móvil, Selenium también tiene un IPhoneDriver iPhone Driver IPhoneDriver y Android Driver Android Driver artículo wiki

Ver también esta presentación

Lamentablemente, no puedo darle mi evaluación de la experiencia laboral de los controladores móviles ya que me ocupo de la automatización web (sin dispositivos móviles). También sepa que Cucumber (herramienta de automatización) es popular entre los autómatas móviles. ver this y this

Espero que sea un poco más claro para ti ahora =)